我有两个表,我想创建一个 SELECT 基于另一个表中的多条记录从一个表中提取一条记录。
如果我只是举一个例子,也许会更清楚。
表:日期。字段:dosID、personID、name、dateIn
1 | 10 | john smith | 2013-09-05
2 | 10 | john smith | 2013-01-25
表:卡片。字段:cardID、personID、cardColor、cardDate
1 | 10 | red | 2013-09-05
2 | 10 | orange | 2013-09-05
3 | 10 | black | 2013-09-05
4 | 10 | green | 2013-01-25
5 | 10 | orange | 2013-01-25
所以我想要的是只在一个人没有收到“红”卡的情况下从日期表中选择一条记录。我最接近的是:
SELECT name, dateIn FROM dates, cards
WHERE dates.personID = cards.personID AND cardColor != 'red' AND dateIn = cardDate;
但是对于这个查询,2013-09-05 服务日期仍然会因为同一天给出的“橙色”和“黑色”卡片而被拉出。
我尝试过搜索,但我什至不确定如何正确描述这个问题,所以我的 Google-fu 让我失望了。任何帮助或建议将不胜感激。