#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