我有两个通过ID字段绑定的表:
table1:id,name,type
table2:id,id_table1,date,status
我必须收集table1
的所有记录,这些记录具有type
字段的特定值且未在table2
中引用以及table1
的所有记录} table2
中引用的status
字段值为LEFT JOIN
。
对于第一部分,如果我没记错,我可以使用 LEFT JOIN table1.name
LEFT JOIN table2
ON table2.id_table1 = table1.id
WHERE (table1.value = 'value1') AND (table2.id_table1 IS NULL);
命令:
SELECT *
FROM contracts
INNER JOIN
(SELECT contractid, max(date) date
FROM contractlogs GROUP BY contractId) b
ON contracts.id = b.contractId
但是第二部分我迷路了......
我正在使用MySQL 5.6,我想定义一个View来处理这个问题。
答案 0 :(得分:1)
我认为您可以将WHERE更改为:
WHERE (table1.value = 'value1')
AND (table2.id_table1 IS NULL
OR
([the other table2 status criteria)
)
;
答案 1 :(得分:1)
SELECT t1.*, t2.*
FROM table1 t1
LEFT JOIN table2 t2
ON table2.id_table1 = table1.id
WHERE (t1.type= 'value1' AND t2.id IS NULL)
OR (t2.status = 'certain status' )
答案 2 :(得分:1)
你可以试试这个......
SELECT T1.*,T2.*
FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id=T2.Id_Table1
WHERE T1.Value = 'value1' AND T2.id_table1 IS NULL
UNION
SELECT T1.*,T2.*
FROM Table1 T1
INNER JOIN Table2 T2 ON T1.Id=T2.Id_Table1
WHERE T2.Status= 'Status Criteria'