Наименование колонок mysql для передачи в переменную

Рейтинг: 0Ответов: 1Опубликовано: 23.02.2023

В базе 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