Jump to content
  • 0

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


Squidward
 Share

Question

Здравствуйте. Имеем три таблицы: фрукты, страны (в которых они растут), и таблица их соотношения (так как один фрукт может принадлежать более чем одной стране). Пример:

78028d9a786cfd3dd5a07891a5854808.jpg

Задача: вывести список фруктов, и рядом с каждым фруктом список его стран. Думал как сделать, ничего не придумал кроме выборки сначала фруктов и вывода их в цикле, потом второй запрос для выбора стран внутри каждого цикла по id фрукта. Но это не есть гуд, как вы понимаете. Как новичок прошу совета (прикидывал и с временными таблицами, и с вложенными select, и с join'ами, но ничего не получилось). Спасибо.

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

в неё через запятую вносить страны к каждому фрукту. и выводить легко

Экий вы) Страна - это тоже единица сайта, которая имеет свои страницы и прочее.

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

Link to comment
Share on other sites

  • 0

все нормально, только таблицу relation удалить и данные из нее равномерно внести в первые две, типа этого (последний пост)

ну а запрос будет что-то типа этого:


"SELECT * FROM `fruits`, `countries` WHERE `fruits`.`fruit_id` = `countries`.`country_id`"
// если надо можно еще в условие дописать гет параметр пришедший с урла:
// AND `fruits`.`fruit_id` = '".$_GET['fruit_id']."'

Link to comment
Share on other sites

  • 0

все нормально, только таблицу relation удалить и данные из нее равномерно внести в первые две

И будет куча дублирующих данных в обеих таблицах.

У фрукта может быть более чем одна страна, и у страны может быть более чем один фрукт.

Link to comment
Share on other sites

  • 0

1. Выбираете страны, которые будут на странице.

2. Получаете строку из их id, разделенных запятыми.

3. Подставляете их в условие `country_id` IN ( 1,2,3 )

4. Разбираете результат по массиву (ключ - counrty_id, значение - массив из фруктов)

5. Выводите это все, подставляя фрукты из массива.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy