我有這個MySQL查詢,它的工作原理:與相關子查詢MySQL的範圍界定問題
SELECT
nom
,prenom
,(SELECT GROUP_CONCAT(category_en) FROM
(SELECT DISTINCT category_en FROM categories c WHERE id IN
(SELECT DISTINCT category_id FROM m3allems_to_categories m2c WHERE m3allem_id = 37)
) cS
) categories
,(SELECT GROUP_CONCAT(area_en) FROM
(SELECT DISTINCT area_en FROM areas c WHERE id IN
(SELECT DISTINCT area_id FROM m3allems_to_areas m2a WHERE m3allem_id = 37)
) aSq
) areas
FROM m3allems m
WHERE m.id = 37
結果是:
nom prenom categories areas
Man Multi Carpentry,Paint,Walls Beirut,Baalbak,Saida
它的工作原理correclty,但只有當我硬編碼到查詢我想要的身份證件(37)。 我希望它在m3allem表中的所有項目工作,所以我試試這個:
SELECT
nom
,prenom
,(SELECT GROUP_CONCAT(category_en) FROM
(SELECT DISTINCT category_en FROM categories c WHERE id IN
(SELECT DISTINCT category_id FROM m3allems_to_categories m2c WHERE m3allem_id = m.id)
) cS
) categories
,(SELECT GROUP_CONCAT(area_en) FROM
(SELECT DISTINCT area_en FROM areas c WHERE id IN
(SELECT DISTINCT area_id FROM m3allems_to_areas m2a WHERE m3allem_id = m.id)
) aSq
) areas
FROM m3allems m
我得到一個錯誤:
Unknown column 'm.id' in 'where clause'
爲什麼? 從MySQL手冊:
13.2.8.7. Correlated Subqueries
[...]
Scoping rule: MySQL evaluates from inside to outside.
那麼... ...當子查詢是在SELECT部分本不工作?我沒有讀到任何有關這方面的信息。
有誰知道嗎?我該怎麼辦?我花了很長時間來構建這個查詢......我知道這是一個怪物查詢,但它在單個查詢中得到我想要的結果,而且我非常接近它的工作原理!
任何人都可以幫忙嗎?
它的工作原理! 非常感謝!我不知道你只能關聯一個深度。 – Rolf 2010-03-12 22:11:52