2014-02-10 3 views
2

Представьте, что у меня есть следующий SELECT оператор, который был упрощен.SQL SELECT statement - те же имена столбцов

SELECT a.Name, b.Name FROM table a LEFT JOIN table b ON a.ID=b.TID 

с помощью PHP Я бегу следующее:

while ($result = mysql_fetch_array($results)) { 

    echo $result["Name"]; 

} 

это даст мне результат b.Name. Я знаю, что могу использовать , однако это может иногда усложнять ситуацию, когда у вас длинный запрос, и вы используете a.*. Я пробовал использовать $result["a.Name"], но он не работает. Я знаю, что это работает $result[0], но опять же это не всегда возможно без осложнений.

Есть ли какой-либо другой способ показать a.Name, пожалуйста?

+4

Простой ответ: No. –

ответ

6

простой ответ: нет.

длинный ответ: индекс массива на PHP должен быть уникальным. Таким образом, последний столбец с похожим именем получит приоритет.

Если два или более столбцов результата имеют одинаковые имена полей, последний столбец будет иметь приоритет. Чтобы получить доступ к другим столбцам (именам) с тем же именем, вы должны использовать числовой индекс столбца или сделать псевдоним для столбца. Для столбцов с псевдонимом вы не можете получить доступ к содержимому с исходным именем столбца.

source

Однако, вы можете решить эту проблему с помощью псевдонимов.

SELECT a.Name as aName, b.Name as bName FROM table a LEFT JOIN table b ON a.ID=b.TID 

, то вы можете получить доступ имена из обеих таблиц с помощью $result["aName"] и $result["bName"]

+0

Спасибо - Да, на самом деле я обычно использую псевдонимы. Был надеялся, что существует другой способ в случаях, когда мне нужно использовать 'SELECT *' – malta

2

Основываясь на ваших требований, вы могли бы рассмотреть разделив запрос в два извлекающих заявления. Это позволит вам иметь дубликаты имен столбцов.

SELECT a.* FROM table a LEFT JOIN table b ON a.ID=b.TID 

SELECT b.* FROM table b LEFT JOIN table a ON a.ID=b.TID 
+0

. Однако это означает, что вы запрашиваете 2 вызова из БД, которые я бы предпочел избежать. – malta

Смежные вопросы