我做了一个加入同一个表的查询 - 用户 - 两次, 与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 ....
如何读取该关联数组
答案 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
看到区别?