MySQL AS как правильно прочитать данные

268
23 апреля 2017, 01:33

Доброго времени суток. Столкнулся с таким вопросов.

Создаю простой запрос с выбором данных из mysql

SELECT name, name2 FROM table

В результате вывожу

$row['name']
$row['name2']

После чего создается более сложный запрос со связями многие ко многим и приходится использовать уже такой вариант

SELECT t1.*, t2.* FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id = t2.id
...

И вот теперь вопрос! Если прописать таким образом вывод:

$row['t1.name']
$row['t2.name2']

Ничего не произойдет. И это понятно.

Возможно ли как-то ссылаться на таблицу а потом на ячейку для вывода? Или самое простое а может и единственное решение это также присвоить "сокращение" для ячеек

SELECT t1.name as name, t2.name2 as name2 FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id = t2.id
...
$row['name']
$row['name2']
Answer 1

Ссылки на таблицу вида <имя_таблицы>.<имя_поля> работают внутри запроса. Когда сформирован результат запроса, то столбцы в нём имеют только название поля. Таблицу-источник данных после формирования результата уже не определить. Поэтому указывайте имена запрашиваемых столбцов явно. SELECT * - это вообще плохая практика, если конечно известны поля, которые Вы хотите получить. Вот только не пойму, зачем Вам alias-ы. Это:

SELECT t1.name as name, t2.name2 as name2 FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id = t2.id

и это:

SELECT t1.name, t2.name2 FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id = t2.id

даст одинаковый результат. Реальный смысл в псевдонимах появится, если в двух таблицах будет столбец с одинаковым именем. Например:

SELECT t1.name as name, t2.name as name2 FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id = t2.id
Answer 2

Не получится слишком просто. Либо каждое повторяющееся поле именовать AS, либо уникальные имена колонок необходимы. Как вариант проверить запрос. Может подойдет для вашего случая UNION ALL (в мануал)

READ ALSO
php while из двух параллельных запросов?

php while из двух параллельных запросов?

Всем здравствуйте уважаемые программистыВот вопрос: Я на php делаю личные сообщения между пользователями но есть одно но

268
file_get_contents отдает пустой результат

file_get_contents отдает пустой результат

$json_object = file_get_contents($url); - отдает пустой результат

340
Перевод в двоичное [требует правки]

Перевод в двоичное [требует правки]

В файле задано большое число (100+ знаков)Необходимо сохранить это число в программе в двоичном виде

250