2017-04-20 52 views
0

我有一个表格,包含个人和第二个表格,包含相册记录和状态。只有当表B中的所有状态都相同时,才能从表A中选择

我需要帮助编写一个视图,只有当该专辑表中的两个记录的状态为true时才选择该视图。 (只选个人所有albumStatus = 1的个人)

我需要的是多一点,因为如果一个人有两个专辑,一个状态为true,另一个状态为false。 我想取消个人被选中的资格,并且我无法弄清楚如何实现这一点。

感谢您提供任何帮助。

问候

回答

2
select * from individuals i where (select count(1) from albums a where status != 1 and individualID = i.individualID) = 0 
+0

提示查询:当检查一个存在或更多的行,使用['EXISTS'](https://msdn.microsoft.com/en-us/library/ms188336.aspx)而不是获得确切的['COUNT'](https:// msdn.microsoft.com/en-us/library/ms175997.aspx),然后将该值与零进行比较。 – HABO

1

下面还检查个体具有至少一个唱片(他们不计任何对不对?)

SELECT DISTINCT i.* 
FROM Individuals AS i 
INNER JOIN Albums AS a 
    ON i.ArtistID = a.ArtistID 
WHERE NOT EXISTS 
(
    SELECT 1 
    FROM Albums AS a2 
    WHERE a2.ArtistID = i.ArtistID 
    AND a2.Status = 0 
) 
相关问题