요한은 위의 거의를 (표 2는이 1 인 경우 Material_Number (에 PROCEDURE_NAME 단지 조회이기 때문에 사용되지 않는 물질이 여전히 table_2에 존재하는 것 같습니다. 일 관계가 바보 또한처럼 보인다) 여전히 필요 . 반복 비교를 위해 모든 명령을 null 값을 얻기 위해 표에 가입
그래서
SELECT *
FROM Materials c
LEFT JOIN Table2 b ON b.Material_Number = c.Material_Number
LEFT JOIN Table1 a ON a.Procedure_Name = b.Procedure_Name
WHERE a.Procedure_Name is null;
:
create table Table1 (Procedure_Name char, date date);
create table Table2 (Procedure_Name char, Material_Number int);
create table Materials (Material_Name varchar(12), Material_Number int);
insert into Table1 values ('A', '2012-11-22');
insert into Table1 values ('B', '2012-11-21');
insert into Table1 values ('C', '2012-11-20');
insert into Table2 values ('A', '101');
insert into Table2 values ('B', '102');
insert into Table2 values ('C', '103');
insert into Table2 values ('D', '104');
insert into Table2 values ('E', '105');
insert into Materials values ('Iron', 101);
insert into Materials values ('Steel', 102);
insert into Materials values ('Wood', 103);
insert into Materials values ('Glass', 104);
insert into Materials values ('Sand', 105);
-- johan query
SELECT Material_Name
FROM Materials M
LEFT JOIN Table2 T ON M.Material_Number = T.Material_Number
WHERE Procedure_Name IS NULL;
-- my query
select Material_Name
from Materials c
left join Table2 b on b.Material_Number = c.Material_Number
left join Table1 a on a.Procedure_Name = b.Procedure_name
where a.Procedure_Name is null;
쿼리 최적화 프로그램이 잠재적으로, MySQL은하지 않습니다 조인 LEFT를 사용하는 경우 똑같이 효율적 무언가로이 차례 수 있지만
선택 null가 – Hogan