我有一个资产表,可以在资源表中有一个或多个资源。
我想返回一个资源,其中所有资源的状态='1',或者根本没有。
到目前为止,我有这个:
SELECT id FROM asset A JOIN resource R ON A.id = R.asset_id WHERE R.status = '1'.
如果我收回记录,我怎么知道这是该资产的所有资源(即它不是一个子集)
(这个数据是伪造的,我的真实查询有点复杂)。
我知道这是一个连接查询,但不知道如何。
感谢您的帮助,
编辑:标题有点误导。我的意思是说所有*孩子都有一定的财产。
答案 0 :(得分:6)
使用NOT EXISTS子句,如下所示:
SELECT id
FROM asset A
INNER JOIN resource R ON A.id = R.asset_id
WHERE NOT EXISTS (
/* Only return results if the asset has resources of all status = '1' */
SELECT 1
FROM Resources R2
WHERE A.asset_id = R2.asset_id
AND R2.status <> '1'
)