1

我有一个资产表,资源表中可以有一个或多个资源。

我想返回具有所有资源状态 = '1' 或根本没有的资产。

到目前为止,我有这个:

SELECT id FROM asset A JOIN resource R ON A.id = R.asset_id WHERE R.status = '1'. 

如果我得到一个记录,我怎么知道这是该资产拥有的所有资源(即它不是一个子集)

(这个数据是捏造的,我的真实查询有点复杂)。

我知道这是一个连接查询,但不知道如何。

谢谢你的帮助,

编辑:标题有点误导。我的意思是说所有*孩子都有一定的财产。

4

1 回答 1

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'
)
于 2013-10-22T00:35:38.493 回答