2013-07-18 27 views
0

我的場景是一個貨運公司。我有發貨,發件人,收貨人和城市表格。 出貨量表包含shipment_category,sender_id,reciever_id。城市表包含ID和city_name。發件人表保存與城市表ID等同的sender_id,sender_city。 Recievers表包含等於城市表ID的reciever_id和reciever_city。如何使用相同列但多次關聯不同表來多次連接表? (MySQL的)

我設法證明這是屬於組別,並有各城市的ID不同的配位和它們的計數一樣

FROM_CITY出貨量|| To_City || COUNT

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 || To_City ||計數

巴黎||倫敦|| 7

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

回答

1

試試這個:

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 
+0

你打我吧!這應該與我的答案接近。 – amaster

+0

您的答案會以任何方式在邏輯上有所不同? – Maximus2012

+0

否,只有大寫保留MySQL的詞和縮進代碼,只是因爲我恨亂碼。這讓我甚至很難閱讀,並在以後很快理解。只是,我從Hard Knocks學校學到了一件事。 – amaster

相關問題