2011-11-22 18 views
0

假設我有2個表
一個名爲Baskets,
另一個名爲Fruits。MySQL&Derived表中的範圍

Baskets-
basket_id,basket_name
1 - 籃一
2 - 籃雙

Fruits-
fruit_id,basket_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的列表。

像這樣:
basket_id,水果
1 - 1,2
2 - 3

但是剛纔我所得到的是這樣的:
basket_id,水果
2 - 1,2, 3

事情是,我必須在DERIVED表中傳遞全局baskets.basket_id值。 在MySQL中是否有像全局範圍的東西?
或者有沒有辦法將全局baskets.basket_id值傳遞給該派生表中的變量?

回答

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 

果實是子查詢。我不明白你爲什麼要定義兩次關係。有沒有你想做的事我不明白?

+0

嗯,實際上我想要做的是爲社交網站創建一個主頁,在那裏我想顯示所有的feed,每個feed的評論以及喜歡每個feed的用戶。我已經能夠列出所有的飼料和他們每個人的適當評論。我不想像100次那樣去得到每個評論和喜歡等等,所以我想要做的就是用1個大的查詢來獲取所有的信息。現在我已經完成了2個查詢。 Btw。感謝你的反應。 –