2011-09-09 18 views
0

我做了一個查詢,加入同一個表 - 用戶兩次, 與JOINs。PHP MySQL結合表問題,讀取提取

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 =>喬什....

我如何可以讀取關聯數組

+0

請提供有關表模式的更多信息。如何連接到mysql以及負責該操作的PHP代碼 – ajreal

+0

SELECT * from tbl1 JOIN tbl2 ON tbl2.USER_ID = tbl1.ID JOIN tbl2 ON tbl1.ID = tbl2.TEACHER_ID WHERE tbl1.ID = 45 – Ted

+0

更新您的問題SQL – ajreal

回答

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的區別在於:你會重寫查詢1爲

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

在這種情況下:

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

看到不同?