오른쪽 조인/왼쪽 조인 또는 내부 조인 사용 시기를 결정하려면 어떻게 해야 합니까? 또는 어떤 테이블이 어느 쪽에 있는지 결정하려면 어떻게 해야 합니까?
조인의 용도는 알고 있습니다만, 왼쪽과 오른쪽 중 어느 쪽이 좋을지 결정하지 못하는 경우가 있습니다.
여기 내가 어디에 갇혀있는지 질문이 있다.
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의 시각적 표현.
또한 SQL SERVER – Better Performance – LEFT JOIN 또는 NOT IN 게시물을 확인하십시오.
MySQL에서 JOIN과 OUTER JOIN의 차이점을 찾습니다.
2개의 세트로 구성되어 있습니다.
두 세트의 모든 결과를 원하는 경우 전체 외부 조인을 사용하십시오.
두 세트에 모두 표시되는 결과만 원하는 경우 내부 조인을 사용하십시오.
세트 a의 모든 결과를 원하는 경우 왼쪽 외부 결합을 사용합니다. 그러나 세트 b에 세트 a의 레코드 중 일부와 관련된 데이터가 있으면 동일한 쿼리에서도 해당 데이터를 사용할 수 있습니다.
다음의 이미지를 참조해 주세요.
네가 원하는 건 내 생각엔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 JOIN
sub_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
'programing' 카테고리의 다른 글
현재 설정된 모든 세션 변수를 인쇄하려면 어떻게 해야 합니까? (0) | 2022.09.24 |
---|---|
matplotlib에서 y축 한계 설정 (0) | 2022.09.24 |
기호, 악센트 문자를 영어 알파벳으로 변환 (0) | 2022.09.24 |
Mariadb ID 시퀀스가 깨질 때마다 min 및 max 변수를 재설정하는 방법 (0) | 2022.09.24 |
MySQL 행의 총계(Grandtotal) (0) | 2022.09.24 |