PHP MySQL结合表问题,读取fetch

时间:2011-09-09 10:14:54

标签: php mysql fetch

我做了一个加入同一个表的查询 - 用户 - 两次, 与JOINs。

SELECT  * from tbl1 
  JOIN  tbl2 ON tbl2.USER_ID = tbl1.ID 
  JOIN  tbl2 as alias ON tbl1.ID = tbl2.TEACHER_ID 
 WHERE  tbl1.ID = 45

对该表的第一次调用是常规的,第二次使用AS的别名。 当我在phpMyAdmin中得到结果时,我看到结果不被称为别名,但是使用通常的名称,就像这样:

USERNAME => Ted,ID_NUMBER => 33322552,...,USERNAME => Josh ....

如何读取该关联数组

1 个答案:

答案 0 :(得分:1)

在这个查询中,你没有使用别名,你正在引用一个名为tbl2的真实表,两次。这不起作用。

SELECT * from tbl1 
JOIN tbl2 ON tbl2.USER_ID = tbl1.ID 
JOIN tbl2 as alias ON tbl1.ID = tbl2.TEACHER_ID   
//                              ^^^^ there's no alias here, it's still tbl2 
WHERE tbl1.ID = 45

将其重写为:

SELECT * from tbl1 
JOIN tbl2 AS t2A ON t2A.USER_ID = tbl1.ID 
JOIN tbl2 AS t2B ON tbl1.ID = T2B.TEACHER_ID 
WHERE tbl1.ID = 45

as关键字是可选的 这样就不会误解你所引用的tbl2版本。

两个查询之间的差异

请注意,您还可以将查询2重写为:

SELECT * from tbl1 
JOIN tbl2 ON (tbl2.USER_ID = tbl1.ID) OR (tbl2.teacher_ID = tbl1.id)  
WHERE tbl1.ID = 45

在这种情况下,您可以将查询1重写为:

SELECT * from tbl1 
JOIN tbl2 ON (tbl2.USER_ID = tbl1.ID) AND (tbl2.teacher_ID = tbl1.id)  
WHERE tbl1.ID = 45

看到区别?