MySQL Inner Join 2表

时间:2012-03-01 19:12:04

标签: php mysql inner-join

SELECT *
FROM tableA a
INNER JOIN tableB b
ON  a.someColumn = b.otherColumn
INNER JOIN tableC c
ON b.anotherColumn = c.nextColumn

如果tableA和tableB在字段中具有相同的名称,该怎么办?我该如何使用:

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

所以我可以从tableA获得标题,从tableB获得标题。因为现在,如果只使用$name['title']它会返回tableA的标题。不幸的是,上面的代码只是一个空字符串。

5 个答案:

答案 0 :(得分:3)

您也可以在列上添加别名,而不是select *

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

然后你的PHP会是这样的:

$name['a_title']

答案 1 :(得分:0)

使用别名

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

FROM ...

然后引用别名:

$name['TitleA']

答案 2 :(得分:0)

停止使用SELECT *

明确列出您的列,然后允许您根据需要对其进行别名。

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

答案 3 :(得分:0)

您必须按名称调出字段,而不是使用SELECT *。执行此操作时,您可以为每个别名分配一个别名。

SELECT a.title AS aTitle, b.title AS bTitle, etc...

答案 4 :(得分: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