Announcement

Collapse
No announcement yet.

GROUP_CONCAT als Subselect, WHERE nicht möglich

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • GROUP_CONCAT als Subselect, WHERE nicht möglich

    Moin, moin!

    Ich nutze in einem Subselect GROUP-CONCAT um mehrere Felder in einer Variablen auszugeben, was soweit auch funktioniert. Dabei können auch mehrere Ergebnisse zutreffend sein und zusammen mit dem eigentlcihen DS ausgegeben werden.
    In diesem Subselect gibt es auch Datumsfelder. Dabei ist das Feld 'bis' wichtig. Ist nämlich 'bis' überschritten, so soll GROUP_CONCAT diesen Datensatz ignorieren.
    Eigentlich bin ich davon ausgegangen, dass ... WHERE Now() < bis ... im Subselect diesen DS ausschließen würde, doch leider gibt es immer einen Syntax-Fehler, der leider nicht genauer definiert ist und sogar auf ein weiteres Subselect, indem gezählt wird, verweist.

    Das funktionierende Statment:
    PHP Code:
    SELECT *,tbl1.UserID,
    (
    GROUP_CONCAT(DATE_FORMAT(zeitlich.von'%d.%m.%Y'),' ''bis',' ',
    DATE_FORMAT(zeitlich.bis'%d.%m.%Y'),' - ',
    zeitlich.bezeichnungzeit,' - ',zeitlich.beschreibungzeit 
    ORDER BY zeitlich
    .bis ASC,zeitlich.bezeichnungzeit ASC SEPARATOR ' +++ ')) 
    AS 
    Gesamtvar,
    (
    SELECT count ... FROM tbl 
    INNER JOIN 
    ... user ON ...
    LEFT OUTER JOIN zeitlich ON ... WHERE ... 
    Füge ich GROUP_CONCAT nun noch die Bedingung hinzu
    PHP Code:
    ... AS Gesamtvar WHERE Now() < zeitlich.bis
    dann gibt es den Syntaxfehler.
    Vielleicht ist es ja auch einfach nicht möglich.
    Da es aber auch DS gibt die überhaupt keinen zeitlichen Eintrag haben, macht es keinen Sinn erst am Ende des Selects die zeitliche Eingrenzung abzufragen.

    Hat jemand einen Rat?

    Gruß Franz

  • #2
    http://dev.mysql.com/doc/refman/5.5/...n_group-concat

    Hm, nix von WHERE zu lesen, ergo WHERE ist innerhalb GROUP_CONCAT() nicht erlaubt.
    Die WHERE-Bedingung gehört außerhalb.

    Edit:
    Code:
    ... AS Gesamtvar WHERE Now() < zeitlich.bis,
    Zwischen den Angaben in der SELECT-Klausel kannst du nicht so einfach mir nichts dir nichts mal eine WHERE-Klausel setzen, diese gehört grundsätzlich nach der kompletten SELECT-Klausel.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Vielen Dank!

      Ich hatte gehofft etwas übersehen zu haben. Das mit dem mir nix dir nix mal eben eine Where-Klausel zu setzten, funktioniert nämlich beim Zählen.
      PHP Code:
      ... AS Gesamtvar ,(SELECT count(tbl2.ID) as count FROM (tbl2
      WHERE tbl2.ID tbl1.ID AND tbl2.status 1) AS zaehler, ... 
      OK, mit GROUP_CONCAT nicht zu lösen.

      Werde mich mal mit UNION beschäftigen, ob es damit lösbar ist.

      Gruß Franz

      Comment


      • #4
        Hallo,
        Originally posted by FraHa View Post
        ...Das mit dem mir nix dir nix mal eben eine Where-Klausel zu setzten, funktioniert nämlich beim Zählen.
        Eine Subquery ist aber auch grundsätzlich was anderes als eine Aggregatfunktion .
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X