[英]Simple sql query with 3 tables
考慮以下包含3個表的數據庫:人員,汽車,人員_汽車(聯接表)。 每個字段及其字段如下所述:
persons: id, phone, address
cars: id, model, manufacturer
persons_cars: id, id_car, id_person
對於當前情況,請考慮所有字段varchar
期望的id
(當然是主鍵和外鍵)。
看起來像一個查詢,該查詢將向我返回擁有同一制造商的多輛汽車(至少兩輛)的人的id
。 (制造商可以相同,例如“大眾”,“沃爾沃”,“本田”等)。 是否可以在一個查詢中執行此操作?
這是執行此操作的簡單方法。 我們可以按人匯總persons_cars
表,然后將制造商總數與不同制造persons_cars
進行比較。 如果前者大於后者,則我們可以假定存在重復的制造商,即該人擁有同一制造商的兩輛或更多汽車。
SELECT pc.id_person
FROM persons_cars pc
INNER JOIN cars c
ON pc.id_car = c.id
GROUP BY pc.id_person
HAVING COUNT(*) > COUNT(DISTINCT c.manufacturer);
您已經用MySQL和Postgres標記了,盡管這個答案應該可以在任何一個數據庫上運行而沒有任何問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.