За последние 24 часа нас посетили 18632 программиста и 1604 робота. Сейчас ищут 975 программистов ...

Нужна помощь в написании SQL запроса

Тема в разделе "MySQL", создана пользователем veiron, 12 апр 2011.

  1. veiron

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

    С нами с:
    3 мар 2009
    Сообщения:
    5
    Симпатии:
    0
    Задача следующая:

    Нужно написать запрос для выдачи рекламных объявлений в зависимости от региона и категории....

    Региона: Москва, Питер, Новосибирск и т.д.
    Категории: Авто, Мото и т.д.

    Есть цена для объявления....

    Получаем три таблицы:

    Таблица регионов

    1) id | idobv | idreg
    1 1 1
    2 1 2
    3 1 3
    4 2 1
    .......
    Таблица категорий
    2) id | idobv | idcat
    1 1 1
    2 1 2
    3 2 2
    4 3 1
    .....

    3) id | idobv | price
    1 1 1
    2 2 15
    3 3 20
    4 4 2
    Мне нужно сформировать таблицу следующего плана

    id | idreg | idcat | idobv1 | price1 | idobv2 | price2 | idobv3 | price3 ... price 5...

    Т.е. таблицу для каждой пары категория - регион - первые 10 самых дорогих объявлений.

    Как мне оптимально написать запрос....

    Очень нужна помощь.

    Пока из задумок только следующее:

    SELECT `obvreg`.`idreg` , `obvcat`.`idcat` , max( `obvprice`.`price` ) AS maxprice, `obvprice`.`idobv`
    FROM `obvreg`
    INNER JOIN `obvcat` ON `obvreg`.`idobv` = `obvcat`.`idobv`
    LEFT JOIN `obvprice` ON `obvreg`.`idobv` = `obvprice`.`idobv`
    GROUP BY `obvreg`.`idreg` , `obvcat`.`idcat` , `obvprice`.`idobv`
    HAVING maxprice = maxprice

    Но это выдает только первое объявление в паре (регион, категория) и то если есть такое по цене то выдается 2

    объявления.. Как сделать одно, если цены совпадают никак не могу, а еще мне нужно выдавать первых 10 объявлений в

    порядке стоимости для пары (регион, категория).