Наименование колонок mysql для передачи в переменную
В базе mysql таблицы (categories, products) имеют несколько колонок с одинаковыми названиями id, title. При сложном запросе из обоих таблиц
"select * from products join categories on products.parent=categories.id order by products.parent ASC"
и последующей передаче значений переменной
<td><?=$row['parent']?></td>
<td><?=$row['title']?></td>
<td><?=$row['price']?></td>
есть непонимание, что собственно туда будет передано. Можно ли конкретизировать значение в квадратных скобках по типу products.title либо использования ковычек, фигурных скобок и т.д. Или единственное решение это сделать все названия столбцов уникальными.
Ответы (1 шт):
Можно задать псевдонимы для выводимых данных, например
SELECT name as what_is_this FROM table
^^---- ключевое слово
При таком подходе на выходе будет what_is_this а не name.
Да, в таком случае надо будет перечислять колонки в SELECT явно. Однако стОит заметить, что общая практика в построении запросов именно явное перечисление желаемых столбцов, а использование звёздочки, скорее, моветон (да, инооооогда можно, есть случае когда можно и удобнее, но всё же лучше привыкать к явному перечислению).
Ещё можно задать алиас для таблиц
SELECT t1.name as t1_name, t2.name as t2_name
FROM table1 t1
JOIN table2 t2
USING(id)
t1 и t2 - псевдонимы для таблиц и можно в других участках запроса обращаться по ним. Это удобно, т.к. не нужно писать наименование таблицы целиком например. Особенно если название таблицы например control_system_equipment