PHP MySQL组合表问题,读取取


PHP MySQL combine tables question, reading the fetch

我做了一个查询,连接同一个表- users-两次,与连接。

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,…用户名=> Josh…

如何读取关联数组

在这个查询中,您没有使用别名,而是两次引用了一个名为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

看到区别了吗?