簡體   English   中英

具有3個表的簡單SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM