2009-11-11 98 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'