Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql-查询三个表_Mysql_Database_Join_Relational - Fatal编程技术网

mysql-查询三个表

mysql-查询三个表,mysql,database,join,relational,Mysql,Database,Join,Relational,我有一个包含三个表的关系数据库。第一个包含与第二个相关的id。第二个包含与第三个相关的id。第三个包含我想要的结果 单次查询是否可以在第一个表中查询一个id,该id给出了第三个表中与之相关的所有结果 对不起,我是mySQL新手 试试这个 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

我有一个包含三个表的关系数据库。第一个包含与第二个相关的id。第二个包含与第三个相关的id。第三个包含我想要的结果

单次查询是否可以在第一个表中查询一个id,该id给出了第三个表中与之相关的所有结果

对不起,我是mySQL新手

试试这个

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'
使用该命令将表相互链接

另外,我推荐基思·布朗。

你想做一个。关于这一点和做这件事的方法有很多。

是的

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

您要使用联接:

   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'

如果你给出一个表格结构,我们可以给你更具体的答案。谢谢你。。。我试过了,效果非常好。。。我还尝试了Peter Lindqvist的方法(使用连接)。我听说JOIN的很贵。您的解决方案在0.0004秒时得出,约为0.0005秒。但目前我几乎没有任何数据。哪一种可能更有效?mysql查询优化器也会将此查询转换为Join查询。我认为您所经历的差异实际上并不显著。如果查询速度较慢,则需要检查索引结构。连接3个表,并且正确的索引通常不会变慢。