За последние 24 часа нас посетили 22684 программиста и 1211 роботов. Сейчас ищут 775 программистов ...

Помогите с выборкой по 5 записей из каждой категории..

Тема в разделе "MySQL", создана пользователем Dedov_Evgeniy, 22 окт 2016.

  1. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Есть 3 таблицы.
    1. Категории.
    id | pid | title ...

    2. Товары
    id | title | ...

    3. Связь Категория => Товар
    id_cat | id_tovar

    Нужно например, из категорий: 2, 5, 56 выдернуть по 5 товаров.

    Сейчас склоняюсь к склейке в php нескольких запросов с лимитом и объедении в UNION.
    Есть ещё какие нибудь решения грамотные, спасибо.
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    А зачем третья таблица ("связь")? Почему бы не держать id категории в таблице товаров? Впрочем, вам видней. Пробуйте такой вариант:
    Код (Text):
    1. SELECT * FROM `product` WHERE `item_id` IN(
    2.   SELECT `t1`.`item_id` FROM `prod_to_cat` `t1`
    3.   LEFT JOIN `prod_to_cat` `t2`
    4.     ON `t2`.`cat_id` = `t1`.`cat_id` AND `t2`.`item_id` <= `t1`.`item_id`
    5.   WHERE `t1`.`cat_id` IN(1,3)
    6.   GROUP BY
    7.     `t1`.`cat_id`, `t1`.`item_id`
    8.   HAVING COUNT(*) < 3)
    В примере, я выбираю по два тавара из категорий с id 1 и 3
    --- Добавлено ---
    На всякий случай, если решите держать категорию с товаром, то вот запрос для него
     
  3. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Товар может относится к нескольким категориям...

    Спасибо за помощь - сейчас попробую.
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Только не забудьте, что если вам надо вытянуть по 5 товаров, то измените условие на "HAVING COUNT(*) < 6"
     
  5. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Хм. а можно к рез-ту категорию получить id. Нам нужно вывести некий анонс товаров в каждой категории, например чел. просматривает 10 категорий, а к ним идут по несколько товаров...