Как не перезаписать одно и то же имя столбцов при объединении нескольких таблиц SQL?

#php #mysql #sql

Вопрос:

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

Например, в таблице «Продукты» есть столбец «изображение«, который также можно найти в таблице «Производитель«. Я не хочу перезаписывать изображение продукта изображением производителя. Мне нужно только получить столбец имени из таблицы производителя КАК «производитель». Остальное должно быть r

Это мой код:

 $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
 

Спасибо!

Комментарии:

1. Если вам нужен только один столбец, в SELECT m.name AS mfr_name, p.*, pd.* FROM ... противном случае перечислите все необходимые столбцы и добавьте AS псевдонимы, где это уместно.

2. В качестве альтернативы вы можете использовать доступ к значениям позиционных столбцов, а не по их имени. Но это НЕ рекомендуемое решение.

3. ВЫБЕРИТЕ по отдельности и поместите псевдоним в каждый столбец, НАПРИМЕР: ВЫБЕРИТЕ manu.id m_id, manu.столбец 2 m_column2, prod.id prod_id, prod.manu_id prod_m_id ОТ производителя manu ОСТАВИЛ ВНЕШНЕЕ СОЕДИНЕНИЕ продуктов prod НА prod_m_id = manu.id