여기에 일대 다 관계가 있습니다. 또한 모든 "기본"레코드가 두 번째 데이터베이스 테이블에 조인 된 레코드를 갖는 것은 아닙니다.MySQL - 복잡 LEFT JOIN
tbl_customers tbl_addresses
테이블에 tbl_addresses
tbl_customers
에 고객 기록이 분명히 많은 주소를 가질 수 있습니다 : 여기
여기 내 딜레마가 있습니다. 여러 주소가있는 많은 고객 레코드가 있으며 고객 레코드의 "주"주소로 해당 주소 레코드 중 하나를 지정합니다. 이것은 단순히 column
이라는 단일 번호 : primaryAddress
입니다. 주소 레코드가 주 주소 인 경우 값은 1입니다.
그래서 여기 내 쿼리입니다 :
SELECT c.customername, a.state
FROM `tbl_customers` c
LEFT JOIN `tbl_addresses` a ON c.customerid = a.customerid
그 쿼리가 1 개 이상의 주소를 가진 모든 고객에 대한 중복 레코드가 발생합니다. 내가 왼쪽으로 조금 더 추가하면 가입 :
이SELECT c.customername, a.state
FROM `tbl_customers` c
LEFT JOIN `tbl_addresses` a ON c.customerid = a.customerid AND a.primaryAddress = 1
이 어떤 결과를 얻을 수 없다, 나는 데이터베이스에서 볼 경우에도 1
그래서 난 = 주소 기록을 많이 primaryAddress에있다 내 질문이 잘못된 것 같아.
누군가 내가 누락 된 부분을 볼 수 있습니까? 이 올바르게
사용자는 논의 후 원인을 찾을 수 있었다 질문에 대답하지 않습니다
: 솔루션을 찾고이 페이지에 착륙하는 일이 누군가에게
나는 많은 고객 기록이 아직 주소 레코드하지 않고 있다는 것을 추가해야합니다. 나는 여전히 그 고객을 표시해야하지만 a.state는 비워 둡니다.(그래서 내가 LEFT JOIN을 선택했다). – coffeemonitor
두 번째 쿼리가 작성된대로 잘못 된 것이 없습니다. 네가 빠뜨린 것이있어? –