Области в MySQL и производных таблицах

Допустим, у меня есть 2 таблицы
Одна называется Baskets,
другая называется Fruits.

Корзины-
Basket_id , Basket_name
1 - Первая корзина
2 - Вторая корзина

Fruits-
fruit_id , cart_id , fruit_name
1 - 1 – Банан
2 – 1 – Яблоко
3–2 – Груша

SELECT * FROM baskets
JOIN (SELECT GROUP_CONCAT(fruit_id SEPARATOR ', ') FROM fruits WHERE baskets.basket_id=fruits.basket_id) AS der_fruits
ON baskets.basket_id=der_fruits.basket_id

Теперь с помощью этого запроса я хочу получить 2 строки (поскольку есть 2 корзины) со списком идентификаторов фруктов в нем.

Вот так:
id_корзины, фрукты
1–1, 2
2–3

Но сейчас я получаю следующее:
Basket_id, Fruits
2 - 1, 2, 3

Дело в том, что я должен передать глобальное значение Baskets.basket_id в таблице DERIVED. Есть ли что-то похожее на глобальную область видимости в MySQL?
Или есть способ передать глобальное значение Baskets.basket_id в переменную внутри этой производной таблицы?


person Ресул Алкан    schedule 22.11.2011    source источник


Ответы (1)


SELECT baskets.*,
      (SELECT GROUP_CONCAT(fruits.fruit_name)
         FROM fruits f
        WHERE b.basket_id = f.basket_id) AS der_baskets
 FROM baskets b

Плоды — это подзапрос. Я не понимаю, почему вы определяете отношения дважды. Есть ли что-то, что вы пытаетесь сделать, я не понимаю?

person Sinthia V    schedule 22.11.2011
comment
Что ж, на самом деле я пытаюсь создать домашнюю страницу для веб-сайта социальной сети, где я хочу показать все каналы с комментариями для каждого канала и пользователей, которым понравился каждый канал. Мне удалось составить список всех каналов с соответствующими комментариями для каждого из них. Я не хочу ходить по 100 раз, чтобы получить каждый комментарий и лайки и так далее, поэтому я пытаюсь получить всю информацию с помощью 1 большого запроса. Теперь я сделал это с 2 запросами. Кстати. спасибо за вашу реакцию. - person Ресул Алкан; 22.11.2011