반응형
SQL의 다대다 가입
미니멀리즘적인 제목에 대해서는 미안하지만 어떻게 짧게 설명해야 할지 모르겠습니다.세 개의 테이블이 있습니다.
그룹 테이블
ID | Genre
-----------------
1 | Action
2 | Adventure
3 | Drama
다대다 테이블
GroupID | ElementID
-----------------
3 | 1
1 | 2
2 | 2
2 | 3
3 | 3
그리고 요소들의 표는
ID | Element
-----------------
1 | Pride and Prejudice
2 | Alice in Wonderland
3 | Curious Incident Of A Dog In The Night Time
모든 것이 괜찮고 매우 간단합니다.제가 달성하고자 하는 SELECT는 다음과 같습니다.
ID | Element | Genre
-------------------------------------------------------------
1 | Pride and Prejudice | Drama
2 | Alice in Wonderland | NULL
3 | Curious Incident Of A Dog In The Night Time | Drama
Elements 테이블에서 모든 요소를 선택하고 장르 필드를 Drama 또는 null로 설정합니다.
MySQL에서 이 작업을 수행하려고 합니다.
잘 부탁드립니다.
이 작은 속임수(다대다 테이블의 외부 조인, 그룹의 제약 조건 포함)로 가능합니다.ID는 3이어야 합니다(드라마의 경우).
http://sqlfiddle.com/ #!9/01cf3/1
SELECT elements.ID, elements.Element, groups.Genre
FROM elements
LEFT OUTER JOIN group_elements
ON elements.ID = group_elements.ElementID
AND group_elements.GroupID = 3
LEFT OUTER JOIN groups
ON group_elements.GroupID = groups.ID
LEFT OUTER JOIN
means : 앞에 나온 테이블의 모든 라인을 가져갑니다(테이블의 왼쪽에 있는 라인).LEFT OUTER JOIN
다음 표에 해당하는 행이 없더라도 (원하는 경우).그 조건은ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3
만약 우리가 우리의 요소와 일치하는 것을 발견한다면,ID, 드라마(그룹)여야 합니다.ID = 3).그런 다음 그룹 테이블에서 다른 LEFT OUTER JOIN을 수행하여 장르 열을 표시하거나 요소가 드라마가 아닌 경우 NULL을 표시할 수 있습니다.
언급URL : https://stackoverflow.com/questions/17774373/sql-join-many-to-many
반응형
'programing' 카테고리의 다른 글
fromPromPromise가 관찰 가능 유형에 없습니다. (0) | 2023.07.30 |
---|---|
PowerShell에서 SQL Server 데이터베이스에 연결 (0) | 2023.07.30 |
UIPanGestureRecognizer를 사용하여 개체를 이동하는 방법은 무엇입니까?아이폰/아이패드 (0) | 2023.07.30 |
웹 응용 프로그램 빌드 오류:CodeDom 공급자 유형은 Microsoft입니다.비주얼 C.CppCodeProvider를 찾을 수 없습니다. (0) | 2023.07.30 |
오라클에서 숫자 형식의 최대값은 얼마입니까? (0) | 2023.07.30 |