我有一个反复出现的问题,即需要不仅消除一条不符合条件的记录,而且消除基于其他分组的所有记录的查询。例如,对于具有以下内容的表:
Name ProdType Prod Spoiled DateReceived
Jack Fruit Apple N 1/1/2019
Jack Fruit Pear Y 1/1/2018
Jack Fruit Orange N 1/1/2019
Jack Vegetable Okra N 1/1/2019
Jack Vegetable Squash N 1/1/2018
Jill Fruit Apple N 4/1/2019
Jill Fruit Cherry N 4/1/2019
Jill Vegetable Corn Y 4/1/2019
Jill Vegetable Okra N 4/1/2019
我的查询可能是搜索谁有什么水果没有变质。
到目前为止,我一直在使用嵌套的 select 语句,但是随着我添加条件,它变得越来越困难。
SELECT NAME
,PRODTYPE
,PROD
,SPOILED
,DATEREC
FROM inventory
WHERE NAME in (
SELECT DISTINCT Name from (SELECT Name FROM inventory
WHERE ProdType = 'fruit' as Data)
WHERE Name NOT IN (SELECT Name from inventory WHERE Name in (
SELECT Name
WHERE Spoiled = 'Y'))
)
在 Jack 和 Jill 的示例中,我的查询将为 Jill 返回 2 个结果(每种水果 1 个),而对 Jack 则没有。
通常至少涉及两个表。当我添加条件时,我遇到了问题(通常没有结果,或者我什至无法通过错误来运行查询),例如如果它在 X 日期之前收到,如果它被破坏,以及添加其他表时也可以.
这种嵌套选择的方式是创建列表然后搜索最好的方式还是 SQL 提供更好的东西?
谢谢。