За последние 24 часа нас посетили 16746 программистов и 1643 робота. Сейчас ищут 962 программиста ...

Помогите составить выборку из трех таблиц

Тема в разделе "PHP и базы данных", создана пользователем Till483, 9 дек 2012.

  1. Till483

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

    С нами с:
    18 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Здравствуйте. Имеем три таблицы: фрукты, страны (в которых они растут), и таблица их соотношения (так как один фрукт может принадлежать более чем одной стране). Пример:
    [​IMG]
    Задача: вывести список фруктов, и рядом с каждым фруктом список его стран. Думал как сделать, ничего не придумал кроме выборки сначала фруктов и вывода их в цикле, потом второй запрос для выбора стран внутри каждого цикла по id фрукта. Но это не есть гуд, как вы понимаете. Как новичок прошу совета. Спасибо.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я за два запроса.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    не пойму в чем заминка. ну выводи, два inner join. по вкусу order by. никаких блеать хитростей!
     
  4. Till483

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

    С нами с:
    18 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Ну, INNER нельзя, так как фрукты, не имеющие стран, отвалятся. По идее LEFT JOIN + GROUP BY fruits.id. В таком случае фрукты да, выводятся (через while + mysql_fetch_array), плюс по одной стране около каждого фрукта. А как вывести все страны? Плюс мне же надо еще выводить ссылку на страницу страны, то есть к каждой стране надо еще прицепить id.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    без групбай. будет куча повторов. потому и два и три запроса вполне себе вариант.
     
  6. Till483

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

    С нами с:
    18 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Где? В цикле при каждой итерации? Зачем создавать такую нагрузку, если можно как-нибудь по-другому сделать?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ДО цикла само собой =)))