私は2つのpostgreSQLテーブルを持っています:従業員とemployee_carsです。 「BMW」、「MERC」、「VW」を所有するすべての従業員を出力する必要がありますが、「AUDI」ではありません。PostgreSQLの検索条件に行がないと出力する必要があります
Iは、クエリの下にしようとしている:以下
SELECT DISTINCT a.employee_name, b.car_brand
FROM employees a
LEFT JOIN employee_cars b
ON a.employee_id = b.employee_id
WHERE b.car_brand IN ('BMW','MERC','VW')
AND b.car_brand NOT LIKE 'AUDI';
OUTPUT:
employee_name,car_brand
"Mary","BMW"
"Mary","MERC"
"Mary","VW"
"Paul","BMW"
"Paul","MERC"
"Paul","VW"
問題は、従業員が所有する各車両はemployee_carsテーブルの行があることです。例えば、私には「BMW」、「MERC」、「VW」、「AUDI」を所有する「Mary」があります。 「BMW」、「MERC」、「VW」だけが所有する「Paul」があります。 「BMW」、「MERC」、「VW」の両方を所有しているため、私のクエリにMaryとPaulの両方が表示されます。
「アウディ」が不足しているため、私の検索結果に「Paul」が表示されます。
私はDBの専門家ではありませんので、ご協力いただきますようお願い申し上げます。 ありがとうございます。
をああ、私は参照してください。 'BMW'、 'MERC' ** AND ** 'VW'は実際に 'BMW'、 'MERC' ** OR ** 'VW'を意味します。 –
@Laurenz Albe、少し複雑ではない: ''BMW'、 'MERC'、 'VW'' ** AND NOT **'' AUDI'' – FireHawk2300