За последние 24 часа нас посетили 36516 программистов и 1713 роботов. Сейчас ищет 791 программист ...

Выборка из двух таблиц минимального значения

Тема в разделе "MySQL", создана пользователем A41524567, 27 авг 2014.

  1. A41524567

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

    С нами с:
    31 янв 2013
    Сообщения:
    74
    Симпатии:
    0
    Есть две таблицы product и option.
    У каждого продукта есть хотя-бы одна опция. У каждой опции разная цена.
    Как получить сводную результат ( параметры продукта и параметры опции с минимальной ценой )
    Подскажите с запросом.....
    [​IMG]
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Тестируем по этой ссылке. Сам запрос:
    Код (PHP):
    1. SELECT 
    2.   `pr`.`id`,
    3.   `pr`.`param_2`,
    4.   `pr`.`param_3`,
    5.   `pr`.`param_4`,
    6.   `pr`.`param_5`,
    7.   MIN(`op`.`price`) AS `min_price`,
    8.   `op`.`param_8`,
    9.   `op`.`param_9`
    10. FROM
    11.   `product` `pr`
    12.   INNER JOIN `option` `op` ON (`pr`.`id` = `op`.`product_id`)
    13. GROUP BY
    14.   `pr`.`id` 
     
  3. A41524567

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

    С нами с:
    31 янв 2013
    Сообщения:
    74
    Симпатии:
    0
    Супер, спасибо! Стартово на реальной базе все отработало, как нужно!
     
  4. A41524567

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

    С нами с:
    31 янв 2013
    Сообщения:
    74
    Симпатии:
    0
    не работает, вернее результат не соответствует нужному.
    `op`.`param_8`,
    `op`.`param_9` - не в тему получаются.
    Задача мутная, гугл ничего не выдает в тему. Пробую раздробить задачу, но облом полный...((((((
    [​IMG]
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Проверяйте. На первый взгляд всё должно работать правильно, но т.к. ваша реальная структура может отличаться, то...
    Код (PHP):
    1. SELECT 
    2.   `op`.`product_id`,
    3.   `pr`.`param_2`,
    4.   `pr`.`param_3`,
    5.   `pr`.`param_4`,
    6.   `pr`.`param_5`,
    7.   `op`.`param_8`,
    8.   `op`.`param_9`,
    9.   `op`.`price`
    10. FROM 
    11.   `option` `op`
    12. INNER JOIN (
    13.   SELECT 
    14.     `product_id`,
    15.     MIN(`price`) AS `min_price`
    16.   FROM 
    17.     `option`
    18.   GROUP BY `product_id`
    19. ) AS `t1`
    20. ON `op`.`product_id` = `t1`.`product_id`
    21. AND `op`.`price` = `t1`.`min_price`
    22. INNER JOIN `product` `pr`
    23.   ON `pr`.`id` = `t1`.`product_id`