2012-09-12 2 views
0

나는 데이터베이스를 쿼리하고 4 가지 테이블에서 정보를 꺼내 다음 sql 있습니다.PHP mysql 가능한 null 값을 가진 4 테이블을 합류

SELECT d.item AS day, m.item as month, y.item as yr, l.item as local 
FROM date_day d 
JOIN date_month m ON d.recid=m.recid 
JOIN date_year y ON d.recid=y.recid 
JOIN location l ON d.recid=l.recid 
WHERE d.recid='cneta0ld00s6' 

이러한 테이블 중 하나 이상이 비어 ​​있고 값을 포함하지 않을 수도 있습니다. 특히 날짜 필드에. 위의 항목 중 하나라도 비어 있거나 존재하지 않으면 모든 것이 실패하게됩니다. 특히 mysql은 FULL JOIN을 가지고 있지 않다는 것을 알고있는 Im은 date_day에 대해 걱정했다.

의견이 있으십니까?

SELECT d.item AS day, m.item as month, y.item as yr, l.item as local 
FROM date_day d 
LEFT JOIN date_month m ON d.recid=m.recid 
LEFT JOIN date_year y ON d.recid=y.recid 
LEFT JOIN location l ON d.recid=l.recid 
WHERE d.recid='cneta0ld00s6' 

당신은 내가 항상 널, 내가 같은 다른 테이블에 추가 된 경우에도 테이블의 데이터를 가지고 있는지 확인하기 위해

+0

은 항상 '위치'레코드가있는 테이블이며 '날짜'테이블이 비어있을 수 있습니까? – Taryn

+0

불행히도 각 하나는 비어 있거나 빠져있을 수 있습니다. 역사적인 사진에 대한 데이터이므로 날짜, 월, 연도 또는 위치는 데이터 작성자가 알지 못했을 수 있습니다. 불행하게도 데이터베이스 구조가 매우 열악합니다. 4 개의 분리가 쉽고 어레이로 결과를로드 할 수 있는지 궁금합니다. –

답변

1

나는 생각 메인 테이블, 항상 recid를 포함하는 테이블, 사진은 사진입니다. 그렇게하면 null이 많은 경우에도 쿼리가 항상 무언가를 반환하도록 보장합니다. 이것은 내가 왼쪽 조인을 사용할 수 있다는 것을 의미합니다.

SELECT p.photo_file, d.item AS day, m.item as month, y.item as yr, l.item as local 
    FROM photo p 
LEFT JOIN date_day d ON p.recid=d.recid 
LEFT JOIN date_month m ON p.recid=m.recid 
LEFT JOIN date_year y ON p.recid=y.recid 
LEFT JOIN location l ON p.recid=l.recid 
WHERE p.recid='paul' 
+0

메신저 꽤 확실한데, 그것은 내 싱글 조인처럼 recid와 함께 column을 포함하도록 date_day 테이블을 기대합니다. –

1

에 원하는 것을 할 것입니다 :

관련 문제