0

私のシナリオは貨物会社です。Shipments、Senders、Recievers、および Cities テーブルがあります。Shipments テーブルは、shipment_category、sender_id、reciever_id を保持します。Cities テーブルには、ID と city_name が保持されます。Sender テーブルには、都市テーブルの ID に等しい sender_id、sender_city が保持されます。Recievers テーブルには、都市テーブルの ID に等しい reciever_id と reciever_city が保持されます。

カテゴリ1に属し、さまざまなコーディネーションを持つ出荷を表示し、都市のIDごとにカウントすることができました

市区町村から || 都市へ || カウント

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 

私が欲しいのは、以下のような都市テーブルから都市名で同じテーブルを取得することです:

市区町村から || 都市へ || カウント

パリ || パリ || ロンドン || ロンドン 7

注: データベース テーブルを変更することはお勧めしません。それは私の状況を表現するための単なるサンプルです。

4

1 に答える 1

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
于 2013-07-18T22:15:32.547 に答える