Задать вопрос
alexander7779
@alexander7779
SEO, PHP (разработка на Laravel).

Дублирование данных при нескольких Left Join (Декартово произведение), как убрать?

Привет всем!
уже 2й день не спеша подхожу к этому запросу, но никак пока не поддаётся.
Есть запрос на получение данных из 3х таблиц.
-Товар
-Таблица Характеристик 1
-Таблица Характеристик 2
SELECT
	tx_carmodels.vendor as vendor,
	tx_carmodels.model as model,
	tx_carmodels.year as year,
	tx_carmodels.modification as modification,
tx_tyrespecifications.front_width as tyre_front_width,
tx_tyrespecifications.front_diameter as tyre_front_diameter,
tx_wheelspecifications.front_width as wheel_front_width,
tx_wheelspecifications.front_diameter as wheel_front_diameter
FROM
	tx_carmodels
LEFT JOIN tx_tyrespecifications ON tx_tyrespecifications.carmodel = tx_carmodels.id
LEFT JOIN tx_wheelspecifications ON tx_wheelspecifications.carmodel = tx_carmodels.id
WHERE
tx_carmodels.vendor_url = 'kia'
AND tx_carmodels.model_url = 'rio'
AND tx_carmodels.modification_url = '16i-jb'

соответственно, при выводе данных получается декартово произведение.

Какое правильное решение, для получения данных без дублей с минимальной нагрузкой на базу.
  • Вопрос задан
  • 843 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
idShura
@idShura
Нет у тебя никаких дублей, скорее всего в таблицах tx_tyrespecifications и tx_wheelspecifications более одной характеристики для выбранной модели.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Получать отдельными запросами. JOIN в любом случае даст декартово произведение.
Ответ написан
Комментировать
SELECT DISTINCT попробуйте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 дек. 2024, в 05:33
100000 руб./за проект
28 дек. 2024, в 05:24
2000 руб./за проект
28 дек. 2024, в 01:30
7000 руб./за проект