2011-11-28 22 views
2

我在MySQL的初學者,我有一個困難時期試圖找出如何解決這個問題,選擇多列。比方說,這些都是表:從多個表

Table 1  ||   Table 2 
------------- || ------------------- 
| dt1 | dt2 | || | dt3 | dt4 | dt5 | 
------------- || ------------------- 
| 1 | abc | || | 3 | wsx | 123 | 
| 7 | asd | || | 3 | qax | 456 | 
| 19 | zxc | || | 4 | rfv | 789 | 
------------- || ------------------- 

我想要做的是有結果一個表列「DT2」,「DT4」和「DT5」,並以只有一個入口。爲此,我將應用於每個表的查詢甚至可能必須限制結果。爲了讓我從每個表所需的結果separetelly我會做到以下幾點:

SELECT `dt2` FROM `table1` WHERE `dt1`=7; 

SELECT `dt4`,`dt5` FROM `table2` WHERE `dt3`=3 LIMIT 0,1; 

還有一兩件事,我不想使用子查詢爲每個列,因爲在我試圖解決的真實事情,我打電話給每個表格5或6列。

只是要明確,我想要得到的是這樣的:

------------------- 
| dt2 | dt4 | dt5 | 
------------------- 
| asd | qax | 456 | 
------------------- 
+1

現在缺少的是在記錄之間的關係兩張桌子。有一個嗎?換句話說,對於表1中的給定記錄,表2中的記錄應該與哪一條記錄配對? –

+0

正如我所說,每張表只有一個結果,最後只有一個結果。所以配對的是我在每個表格中查詢的答案。 – hbmuller

+0

這沒有什麼大的意義。只需通過兩個查詢查詢兩個表,然後使用包裝語言(例如PHP)自行構建結果。其他任何事情都像用左手刮你的右耳。 – TMS

回答

8
SELECT a.dt2, b.dt4, b.dt5 
FROM table1 a, table2 b 
WHERE a.dt2 = 'asd' 
LIMIT 0,1; 
+0

但是第二個表中的搜索呢? – hbmuller

+0

這個查詢使用2個表格,table1和table2 ....如果這個查詢有問題,請更加特別。 – Ben

0

Ben的回答解決了我類似的問題。

SELECT t1.dt2,t2.dt4,t2.dt5,t2.dt3#獲取DT3從表2

數據FROM表1 T1,T2表2

WHERE t1.dt2 = 'ASD' 和T2 .dt4 ='qax'AND t2.dt5 = 456

| asd | qax | 456 | 3 |

'3'是我通過查詢表中的'qax',456數據所需的數據,否則您正在指定從列中返回哪些數據。

我只有2個表在我的實例中進行查詢,所以我可以放棄使用的AND表達式,它可能不是最佳實踐,並且最有可能有更好的方法來匹配來自多個表的數據。

編輯:我剛剛意識到這個問題是5歲..我希望你現在已經達到你想要的。

1
SELECT a.dt2, b.dt4, b.dt5 

FROM表1一個,表2 b WHERE a.dt2 = 'ASD' LIMIT 0,1;

Ben的回答是不錯的,你可以通過用逗號將它們分開使用多個表(,),但如果有這些表之間的關係,那麼你應該使用一些Sub QueryJOIN