2 つのテーブルがあり、別のテーブルの複数のレコードに基づいて、1 つのテーブルから 1 つのレコードを取得する 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 は失敗しました。どんな助けや提案も大歓迎です。