Области применения в MySQL и производных таблицах - PullRequest
1 голос
/ 22 ноября 2011

Допустим, у меня есть 2 таблицы
Один по имени Корзины,
Другой по имени Фрукты.

Baskets-
идентификатор корзины, имя корзины
1 - Корзина первая
2 - Корзина Два

Fruits-
fruit_id, basket_id, fruit_name
1 - 1 - банан
2 - 1 - яблоко
3 - 2 - Груша

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

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

Как это:
basket_id, фрукты
1 - 1, 2
2 - 3

Но сейчас я получаю вот что:
basket_id, фрукты
2 - 1, 2, 3

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

1 Ответ

0 голосов
/ 22 ноября 2011
SELECT baskets.*,
      (SELECT GROUP_CONCAT(fruits.fruit_name)
         FROM fruits f
        WHERE b.basket_id = f.basket_id) AS der_baskets
 FROM baskets b

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

...