2012-11-15 100 views
1

我打算將兩個表格連接到同一個目標但具有不同的原始值。我相信我不擅長用言語解釋。但是希望你會得到我想要的東西通過我下面的代碼:MySQL在不同列上的同一行中連接兩個表格

MySQL的

SELECT 
option_places_db.plc_en AS from_en, 
option_places_db.plc_th AS to_en, 
concat(time_start_hr, ':', time_start_min) AS time1, 
concat(time_end_hr, ':', time_end_min) AS time2, 
price_adult, 
price_child 
FROM `time_table_boat` 
INNER JOIN option_places_db ON time_table_boat.org = option_places_db.plc_id 
ORDER BY time_table_boat.org ASC 

time_table_boat enter image description here

option_places_db

enter image description here

根據time_table_boat表。我預計:

from_en to_en  time1 time2 price_adult price_child 
Aonang  Phi Phi 09:00 11:00 450   350 
Phi Phi Aonang 15:30 17:00 450   350 

但是從運行MySQL事實證明這樣的事情,而不是: enter image description here

列 'to_en' 不與time_table_boat.des = option_places_db匹配(= 3),因爲它應該是。我試圖添加更多的內部連接線,但它出現了相同目標表名的錯誤。

回答

2

試試這個

SELECT 
    org_places.plc_en AS from_en, 
    des_places.plc_en AS to_en, 
    CONCAT(time_start_hr, ':', time_start_min) AS time1, 
    CONCAT(time_end_hr, ':', time_end_min) AS time2, 
    price_adult, 
    price_child 
FROM `time_table_boat` 
INNER JOIN 
    option_places_db AS org_places ON time_table_boat.org = org_places.plc_id 
INNER JOIN 
    option_places_db AS des_places ON time_table_boat.des = des_places.plc_id 
ORDER BY time_table_boat.org ASC 
+0

我是否需要創建另一個名爲'des_places'的表? – Wilf

+0

不,你只是給了option_places_db不同的別名。其中一個用於原點,另一個用於目的地。 – aykut

+0

我有那個@aykut,你的解決方案工作。謝謝。 – Wilf

1

試試這個:

SELECT 
placeOrg.plc_en AS from_en, 
placeDes.plc_th AS to_en, 
concat(time_start_hr, ':', time_start_min) AS time1, 
concat(time_end_hr, ':', time_end_min) AS time2, 
price_adult, 
price_child 
FROM `time_table_boat` 
INNER JOIN option_places_db AS placeOrg ON time_table_boat.org = placeOrg.plc_id 
INNER JOIN option_places_db AS placeDes ON time_table_boat.des= placeDes.plc_id 
ORDER BY time_table_boat.org ASC 

你想從表中option_places_db兩個不同的名字,所以你需要參加兩次。第一次檢索來源名稱,第二次檢索目的地名稱。 你可以看到你使用相同的表格來源和目的地,你只需將它們連接兩次,並給它一個臨時名稱來區分你得到的迴應。

編輯:更正了查詢

+1

您的解決方案似乎可行,但 '#1054 - 'on子句'中的未知列'time_table_boat.dest' 謝謝。 – Wilf

+0

是的,對不起,在檢查你選擇的名字之前寫下了目的地,並忘記了t。好的趕上! – koopajah

相關問題