MySQL-Scoping-Problem mit korrelierten Unterabfragen

Ich habe diese Mysql-Abfrage, es funktioniert:

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     

Das Ergebnis ist:

nom             prenom      categories              areas
Man             Multi       Carpentry,Paint,Walls   Beirut,Baalbak,Saida

Es funktioniert korrekt, aber nur, wenn ich die ID, die ich will, fest in die Abfrage einprogrammiere (37). Ich möchte, dass es für alle Einträge in der m3allem-Tabelle funktioniert, also versuche ich Folgendes:

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

Und ich bekomme einen Fehler:

Unbekannte Spalte 'm.id' in 'where-Klausel'

Warum? Aus dem MySQL-Handbuch:

13.2.8.7. Correlated Subqueries 
[...] 
Scoping rule: MySQL evaluates from inside to outside.

Also ... funktioniert dies nicht, wenn sich die Unterabfrage in einem SELECT-Abschnitt befindet? Ich habe nichts darüber gelesen.

Weiß jemand? Was soll ich machen? Es hat lange gedauert, bis ich diese Abfrage erstellt habe ... Ich weiß, dass es sich um eine Monsterabfrage handelt, aber mit einer einzigen Abfrage kann ich genau das erreichen, was ich will, und ich bin so kurz davor, sie zum Laufen zu bringen!

Kann jemand helfen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage