나는 세 개의 테이블을 가지고 있는데 모두 공통 필드 (our_id
)를 공유합니다.MySQL : 두 테이블에서 결과 가져 오기, 세 번째 테이블에서 일치 개수
our_id
은 Table1의 기본 키입니다.
our_id
또한 표 2 및 표 3에 0 번 이상 존재합니다.
나는 our_id
는 표 1과 표 2에 모두 존재하는 레코드를 선택하기를 원하지만 나는 또한 our_id
는 표 3에서 발생 (또는 단지 our_id
존재 여부를 표 3에 관계없이) 얼마나 많은 시간을 계산해야합니다.
SELECT Table1.*, Table2.*, COUNT(Table3.*) AS table3_count
FROM Table1, Table2, Table3
WHERE Table1.our_id = Table2.our_id
AND Table1.our_id = Table3.our_id;
...하지만 our_id
는 할 수 없습니다 표 3에 존재하는 경우에만 결과를 반환합니다.
그래서 나는 시도 :
SELECT Table1.*, Table2.*, COUNT(Table3.*) AS table3_count
FROM Table1, Table2, Table3
WHERE Table1.our_id = Table2.our_id
AND (Table1.our_id = Table3.our_id
OR NOT EXISTS (SELECT * FROM Table3
WHERE Table1.our_id=Table3.our_id));
하지만 그건 그냥 실행 및 실행 ...
내가 our_id
는 표 1과 표 2에 모두 존재하는 여전히 결과를 반환해야하고, 몇 번이나 말해 (또는 표 3에 있음).
미리 감사드립니다.
옳은 말처럼 들립니다. 나는 그것을 시험해 보았고 오류가 발생했다 :'# 1054 - 'on clause'에 'Table1.our_id'라는 알 수없는 열이 있지만 테이블과 필드가 분명히 존재한다. 지금!). – JoLoCo
대소 문자가 정확합니까? 모든 테이블에 별명을 지정하여 문제를 해결하려고 할 수 있습니다. 'FROM Table1 t1, Table2 t2' 그리고 나서'ON t1.our_id = t3.our_id'를 사용하십시오. 나는 무엇이 잘못 될 수 있는지 전혀 모르지만, 아마 그 두 가지 중 하나가 도움이 될 것입니다. –
아, 알 겠어! 나는'FROM' 라인에서 Table1과 Table2를 교환해야했습니다 (두 번째 라인은'FROM Table2, Table1'을 읽었습니다). 도와 주셔서 대단히 감사합니다. 정말 고맙습니다. – JoLoCo