SELECT *来自主表,包括外键相关表

时间:2015-05-04 11:40:02

标签: mysql

我有3张桌子。

Table A
a_id, a_name, a_description, b_id

Table B
b_id, b_name, c_id

Table C
c_id, c_name (c_name is unique hence no duplicates)

表" A"有一个外键' b_id'表" B"。表" B"有外键' c_id'表C

我想要所有表格的行和#34; A"(否其中的子句)。每行都有' b_id'所以我还需要表格" B"中的那个forign键的行细节。并且' c_id'的行详细信息太

您能帮助我在高效的单一查询中实现这一点吗?我使用三个单独的查询并在PHP中合并结果。代码看起来很复杂我知道有更简单有效的方法,因为我刚刚启动了mysql。

我正在制作获取所有这些数据并发送到我的应用程序的API。

编辑:

  • 我正在做" SELECT *"来自表" A"
  • 然后我正在迭代行数组并运行"从中选择b_name 表B其中b_id = a.b_id"
  • 然后"从表B中选择c_name,其中c_id = b.c_id"

我最终合并了数组结果。

我需要的结果是表A中的*列,' b_name'来自表B和' c_name'来自表C.

2 个答案:

答案 0 :(得分:0)

使用JOIN,例如:

SELECT A.a_id, B.b_id, C.c_id FROM A JOIN B ON A.b_id = B.b_id JOIN C ON B.c_id = C.c_id

更多信息:http://www.w3schools.com/sql/sql_join_left.asp

答案 1 :(得分:0)

如果我没错,那么这可能会对你有所帮助。在这里,您需要使用join

Select A.*,B.b_name as b_name,C.c_name as c_name from A left join B on A.b_id = B.b_id left join C on B.c_id = C.c_id