Дубли в выборке SQL

Тема в разделе "Базы данных", создана пользователем zek24, 19 дек 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    780
    Симпатии:
    238
    Привет комрады!
    давно не обращался к sql и подзабыл...
    Код:
    SELECT product.product_id,
            product.model,
            product.quantity,
            product.image,
            product.price,
            product_description.name,
            product_description.description,
            product_to_category.category_id,
            (SELECT category_description.name FROM category_description WHERE category_description.category_id = product_to_category.category_id) AS category_name,
            product_to_ymm.make_id,
            (SELECT make.make FROM make WHERE make.id = product_to_ymm.make_id) AS auto_1,
            product_to_ymm.model_id,
            (SELECT model.model FROM model WHERE model.id = product_to_ymm.model_id) AS auto_2,
            product_to_ymm.begin_year,
            product_to_ymm.end_year                               
            FROM product, product_description, product_to_category, product_to_ymm
            WHERE
            product.product_id = product_description.product_id
            AND product_description.product_id = product_to_category.product_id
            AND product_description.product_id = product_to_ymm.product_id       
            ORDER BY product_to_category.category_id, product.product_id
    Делаю выборку из магазина опенкарт несколько стандартных таблиц + две из модуля подбора товара по машине.
    Проблема в том, что некоторые строки выводятся по 4, 2 раза, некоторые нормально - 1раз.
    Забыл как правильно объединять таблицы в запросе... сейчас малость горит - нет времени штудировать литературу заново.
    Хелпните, кому не сложно.
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    у вас, скорее всего, товар может находиться в нескольких категориях(в корневой, подкатегории, подподкатегории), поэтому выводится по нескольку раз, для каждой из категорий.

    сгруппируйте запрос по product.product_id, т.е.
    Код:
    group by product.product_id
     
    zek24 нравится это.
  3. Gregurco

    Gregurco Создатель

    Регистр.:
    8 дек 2014
    Сообщения:
    16
    Симпатии:
    1
  4. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    780
    Симпатии:
    238
    что-то не так...
    добавляю
    group by product.product_id и в результате в выборке получается 3133 товаров, хотя в таблице product их 3325
    -------------------------------------------
    решено
    ------------------------------------------
    Код:
    SELECT product.product_id,
            product.model,
            product.quantity,
            product.image,
            product.price,
            product_description.name,
            product_description.description,
            product_to_category.category_id,
            (SELECT category_description.name FROM category_description WHERE category_description.category_id = product_to_category.category_id) AS category_name,
            product_to_ymm.make_id,
            (SELECT make.make FROM make WHERE make.id = product_to_ymm.make_id) AS auto_1,
            product_to_ymm.model_id,
            (SELECT model.model FROM model WHERE model.id = product_to_ymm.model_id) AS auto_2,
            product_to_ymm.begin_year,
            product_to_ymm.end_year  
            FROM product
            LEFT JOIN product_description ON product.product_id = product_description.product_id
            LEFT JOIN product_to_category ON product_description.product_id = product_to_category.product_id
            LEFT JOIN product_to_ymm ON product_description.product_id = product_to_ymm.product_id
            GROUP BY product.product_id
            ORDER BY product_to_category.category_id, product.product_id
     
    Последнее редактирование: 29 дек 2014
Статус темы:
Закрыта.