2012-03-01 7 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 Inner Join 2 таблицы

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

Таким образом, я мог получить заголовок из таблицы A и название из таблицыB. Потому что теперь, если используется только $name['title'], он возвращает название таблицы. И приведенный выше код, к сожалению, дает только пустую строку.

+0

Это, вероятно, поможет вам назвать столбцы, которые вы хотите, а не с помощью '*'. –

ответ

3

Вместо того, чтобы делать select *, вы также можете разместить псевдоним на столбцах.

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

Тогда ваш PHP будет что-то вроде:

$name['a_title'] 
+0

38 секунд и оранжевая предупреждающая панель. Drats! ; p –

+0

Может стоить объяснить * почему * не использовать SELECT * – liquorvicar

+0

И если мне нужно получить все поле? @Matthew –

0

использовать псевдоним

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

ОТ ...

Затем ссылаться на псевдоним:

$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