Auge: Problem mit GROUP_CONCAT in Subquery

Beitrag lesen

Hallo

Tach!

SELECT

id,
  parent,
  pfad,
  titel
FROM Struktur
  WHERE id IN(IF((SELECT parent FROM Struktur WHERE id = "[code lang=php]. intval($currentPage['id']) .


> >     (SELECT GROUP\_CONCAT(id) AS id FROM Struktur WHERE parent = "`. intval($currentPage['id']) .`{:.language-php}"),  
> >     (SELECT GROUP\_CONCAT(id) AS id FROM Struktur WHERE parent = "`. intval($currentPage['parent']) .`{:.language-php}")))  
> >   ORDER by sortierer ASC"[/code]  
>   
> GROUP\_CONCAT() liefert einen String zurück. Der wird komplett als ein Parameter von IN() angesehen. Du willst jedoch, dass er als kommaseparierte Liste angesehen wird.  
  
Verständnisfrage: Wenn ich den Query händisch zusammenflicke, ist der betreffende Teil doch auch nur ein String. Was ist hier anders?  
  

> Das geschieht aber nicht, weil das bedeuten würde, dass Daten als Code interpretiert werden müssten. Wenn du die Werte einzeln verarbeitbar haben willst, muss die Query eine Ergebnismenge zurückliefern.  
>   
> Ob du damit ans Ziel kommst ... habe ich nicht untersucht.  
  
Mit der normalen Ergebnismenge bin ich ebenfalls gescheitert, da dann (völlig zu recht) angemeckert wird, dass der Subquery mehr als ein Ergebnis zurückgegeben hat (`Subquery returns more than 1 row`{:.language-sql}).  Mit dem [in der Doku (ERROR 1242)](http://dev.mysql.com/doc/refman/5.1/de/subquery-errors.html) empfohlenen `ANY`{:.language-sql} vor dem Subquery haut's mir in meinem Konstrukt einen Systax-Error um die Ohren, zumal ich da \*irgendein\* Ergebnis bekäme.  
  
Tschö, Auge  

-- 
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.  
Terry Pratchett, "Wachen! Wachen!"  
  
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}  
  
[Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)