2012-03-01 34 views
1
SELECT * 
FROM tableA a 
INNER JOIN tableB b 
ON a.someColumn = b.otherColumn 
INNER JOIN tableC c 
ON b.anotherColumn = c.nextColumn 

如果tableA和tableB在字段中具有相同的名稱會怎樣?我如何使用:MySQL內部聯接2個表

<? 
$name = mysql_fetch... 
echo $name['a.title'] . ' ' . $name['b.title']; 
?> 

所以我可以從tableA和titleB從tableB得到標題。因爲現在,如果僅使用$name['title'],它將返回tableA的標題。上面的代碼不幸的只是一個空字符串。

+0

這可能會幫助你的名字你想要的列,而不是使用'*'。 – 2012-03-01 19:13:45

回答

3

而不是做select *,你也可以在列上放置一個別名。

SELECT a.title AS 'a_title', b.title AS 'b_title' 
-- ... 

那麼你的PHP將是這樣的:

$name['a_title'] 
+0

38秒,沒有橙色的警告欄。 Drats! ; p – 2012-03-01 19:14:38

+0

可能值得解釋*爲什麼*不使用SELECT * – liquorvicar 2012-03-01 19:20:48

+0

如果我需要檢索所有字段? @Matthew – 2012-03-01 19:28:09

0

使用別名

SELECT a.title AS TitleA, 
     b.title AS TitleB, 
     ... 

FROM ...

然後引用別名:

$name['TitleA'] 
0

停止使用SELECT *

顯式列出您的列,然後根據需要允許您將它們別名。

SELECT a.title AS TableATitle, b.title AS TableBTitle, ... 
0

而不是使用SELECT *,您將不得不按名稱調用字段。當你這樣做時,你可以爲每個分配一個別名。

SELECT a.title AS aTitle, b.title AS bTitle, etc... 
0
SELECT *, a.title as atitle, b.title as btitle 
FROM tableA a 
INNER JOIN tableB b 
ON a.someColumn = b.otherColumn 
INNER JOIN tableC c 
ON b.anotherColumn = c.nextColumn