![](/img/trans.png)
[英]mysql inner join same table and same column multiple times from multiple tables
[英]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.