programing

오른쪽 조인/왼쪽 조인 또는 내부 조인 사용 시기를 결정하려면 어떻게 해야 합니까? 또는 어떤 테이블이 어느 쪽에 있는지 결정하려면 어떻게 해야 합니까?

sourcejob 2022. 9. 24. 10:22
반응형

오른쪽 조인/왼쪽 조인 또는 내부 조인 사용 시기를 결정하려면 어떻게 해야 합니까? 또는 어떤 테이블이 어느 쪽에 있는지 결정하려면 어떻게 해야 합니까?

조인의 용도는 알고 있습니다만, 왼쪽과 오른쪽 중 어느 이 좋을지 결정하지 못하는 경우가 있습니다.

여기 내가 어디에 갇혀있는지 질문이 있다.

    SELECT  count(ImageId) as [IndividualRemaining],
                userMaster.empName AS ID#,
                CONVERT(DATETIME, folderDetails.folderName, 101) AS FolderDate,
                batchDetails.batchName AS Batch#,
                Client=@ClientName,
                TotalInloaded = IsNull(@TotalInloaded,0),
                PendingUnassigned = @PendingUnassigned,
                InloadedAssigned =     IsNull(@TotalAssigned,0),
                TotalProcessed = @TotalProcessed,
                Remaining = @Remaining
        FROM
                batchDetails
                    Left JOIN  folderDetails ON batchDetails.folderId = folderDetails.folderId
                    Left JOIN  imageDetails ON batchDetails.batchId = imageDetails.batchId
                    Left JOIN  userMaster ON imageDetails.assignedToUser = userMaster.userId

        WHERE   folderDetails.ClientId =@ClientID and verifyflag='n'
                and folderDetails.FolderName IN (SELECT convert(VARCHAR,Value) FROM dbo.Split(@Output,','))
                and userMaster.empName <> 'unused'

        GROUP BY userMaster.empName, folderDetails.folderName, batchDetails.batchName

        Order BY folderDetails.Foldername asc

네, 상황에 따라 달라요.

SQL JOIN을 사용하는 이유

답변: SQL SELECT 문을 통해 여러 테이블에 액세스해야 할 경우 항상 SQL JOIN을 사용하십시오.또한 JOIN 테이블 간에 일치하지 않는 경우 결과를 반환하지 마십시오.

코드 프로젝트에 대한 이 원본 기사를 읽으면 많은 도움이 될 것입니다: SQL Joins의 시각적 표현.

alt 텍스트

또한 SQL SERVER Better PerformanceLEFT JOIN 또는 NOT IN 게시물을 확인하십시오.

MySQL에서 JOIN과 OUTER JOIN의 차이점을 찾습니다.

2개의 세트로 구성되어 있습니다.

  • 두 세트의 모든 결과를 원하는 경우 전체 외부 조인을 사용하십시오.

  • 두 세트에 모두 표시되는 결과만 원하는 경우 내부 조인을 사용하십시오.

  • 세트 a의 모든 결과를 원하는 경우 왼쪽 외부 결합을 사용합니다. 그러나 세트 b에 세트 a의 레코드 중 일부와 관련된 데이터가 있으면 동일한 쿼리에서도 해당 데이터를 사용할 수 있습니다.

다음의 이미지를 참조해 주세요.

SQL 가입

네가 원하는 건 내 생각엔LEFT JOIN메인 테이블에서 시작하여 조인된 레코드에 유효한 데이터가 있는지 여부에 관계없이 메인 테이블의 모든 레코드를 반환합니다(그래픽의 왼쪽 위 원 2개로 표시됨).

조인(JOIN)은 연속적으로 발생하므로 조인할 테이블이 4개 있고 항상 메인 테이블에서 모든 레코드를 원하는 경우 계속 진행해야 합니다.LEFT JOIN예를 들어 다음과 같습니다.

SELECT * FROM main_table
LEFT JOIN sub_table ON main_table.ID = sub_table.main_table_ID
LEFT JOIN sub_sub_table on main_table.ID = sub_sub_table.main_table_ID

네가 만약INNER JOINsub_sub_table. 결과 세트를 즉시 축소합니다.LEFT JOIN서브테이블에 있습니다.

할 때 잊지 마세요.LEFT JOIN, 를 고려해야 합니다.NULL값이 반환됩니다.main_table에 레코드를 결합할 수 없는 경우,LEFT JOIN는, 그 필드를 강제적으로 표시해, NULL 을 포함합니다.INNER JOIN둘 사이에 유효한 링크가 없기 때문에(가입한 ID에 근거한 대응 레코드가 없기 때문에) 행을 「폐기」하는 것이 당연합니다.

그러나 당신이 찾고 있는 행을 걸러내는 where 스테이트먼트가 있다고 하셨기 때문에 JOIN에 대한 질문은 당신의 진짜 문제가 아니기 때문에 무효입니다.(이것은, 코멘트를 올바르게 이해하고 있는 경우)

언급URL : https://stackoverflow.com/questions/3308122/how-do-i-decide-when-to-use-right-joins-left-joins-or-inner-joins-or-how-to-dete

반응형