MySQL中的范围&派生表

时间:2011-11-22 00:46:19

标签: mysql scope subquery sql-function

假设我有两张桌子 一个名叫Baskets,
另一个名为Fruits。

Baskets-
basket_id,basket_name
1 - 篮子一 2 - 第二篮子

Fruits-
fruit_id,basket_id,fruit_name
1 - 1 - 香蕉
2 - 1 - Apple
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的列表。

像这样:
basket_id,fruits
1 - 1,2
2 - 3

但刚才我得到的是这个:
basket_id,fruits
2 - 1,2,3

问题是,我必须在DERIVED表中传递全局baskets.basket_id值。 MySQL中是否存在全局范围? 或者有没有办法在派生表中的变量中传递全局baskets.basket_id值?

1 个答案:

答案 0 :(得分:0)

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

水果是子查询。我不明白为什么你两次定义关系。你有什么想做的我不明白吗?