2009-11-11 102 views
2

我有一個有三個表的關係數據庫。第一個containts id與第二個有關。第二個包含與第三個相關的id。第三個包含我之後的結果。mysql - 查詢三個表

是否有可能使用單個查詢來查詢第一個表中的id,該表中給出了與第三個表有關的所有結果?

對不起,我是mySQL的新手。

+0

如果你給一個表結構,我們可以給你更具體的答案。 – CSharpAtl 2009-11-11 15:36:20

回答

9

Mysql Join

試試這個

select * from table1 t1 
join table2 t2 on t1.t2ref = t2.id 
join table3 t3 on t2.t3ref = t3.id 

添加where子句中的表1

where t1.field = 'value' 
2

使用JOIN命令搜索特定的行鏈接你的表到oneantother。

此外,我建議由基思布朗this tutorial

4

SELECT t3.* 
    FROM t1, t2, t3 
    WHERE t1.id = t2.id 
    AND t2.otherid = t3.id 
    AND t1.id = XXXX 
+0

謝謝......我試過了,它完美地工作......我也嘗試了Peter Lindqvist的方法(使用連接)。我聽說JOIN的很貴。您的解決方案在0.0004秒內發佈,相當於0.0005秒。目前我幾乎沒有任何數據。這可能會更有效率? – Mark 2009-11-11 16:04:23

+0

mysql查詢優化器會將這個查詢也轉換成加入 – knittl 2009-11-11 16:07:14

+0

我認爲你所體驗到的差異實際上並不重要。如果你的查詢速度很慢,你需要檢查你的索引結構。加入3個表格並且適當的索引通常不會變慢。 – 2009-11-11 19:39:20

3

要使用一個連接:

SELECT `t3`.`id` 
    FROM `table3` `t3` 
LEFT JOIN `table2` `t2` 
     ON `t3`.`foreign_id` = `t2`.`id` 
LEFT JOIN `table1` `t1` 
     ON `t2`.`foreign_id` = `t1`.`id` 
    WHERE `t1`.`id` = 'some_id'