簡體   English   中英

如何使用同一列但關聯不同的表多次聯接一個表? (MySQL的)

[英]How to join a table multiple times using same column but related different tables? (Mysql)

我的情況是針對一家貨運公司。 我有發貨,發件人,收貨人和城市表格。 運貨表保存shipment_category,sender_id,reciever_id。 城市表包含ID和city_name。 發件人表中包含sender_id,senderer_city,它們等於城市表的ID。 收據表保存的reciever_id和reciever_city等於城市表的ID。

我設法顯示了屬於類別1的貨件,並且按照不同城市的ID對它們進行了不同的協調和計數

From_City || 到城市|| 計數

1205 || 1346 || 7

我使用以下代碼:

SELECT  S.city AS From_City, R.city AS To_City , COUNT( * ) 
FROM Shipments Sh, Recievers R, Senders S
WHERE SH.category=1
AND SH.sender_id = S.ID
AND SH.reciever_id = R.ID
GROUP BY From_City, To_City
ORDER BY COUNT( * ) DESC 

我想要從城市表中按城市名稱獲取相同的表,如下所示:

From_City || 到城市|| 計數

巴黎|| 倫敦|| 7

注意:不建議更改數據庫表。 這只是表達我的情況的一個示例。

嘗試這個:

SELECT
    `sender_cities`.`city_name` AS `From_City`,
    `receiver_cities`.`city_name` AS `To_City`,
    COUNT(*) as `Count`
FROM 
    `shipments` `ship`
    INNER JOIN `senders` `s` ON (`ship`.`sender_id` = `s`.`sender_city`)
    INNER JOIN `cities` `sender_cities` ON (`s`.`sender_city` = `sender_cities`.`city_id`)
    INNER JOIN `receivers` `r` ON (`ship`.`receiver_id` = `r`.`sender_city`)
    INNER JOIN `cities` `receiver_cities` ON (`r`.`receiver_city` = `receiver_cities`.`city_id`)
GROUP BY 
    `From_City`,
    `To_City`
ORDER BY 
    `Count` DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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