約翰以上幾乎都有它的(未使用的材料仍然存在TABLE_2,因爲表2只是一種Material_Number(這如果是1過程名的查找:1的關係似乎是一個愚蠢的加法)還是需要加入對錶1得到空值
所以
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;
選擇null選擇null – Hogan