Announcement

Collapse
No announcement yet.

Mehrfach Count in einer Abfrage

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

  • Mehrfach Count in einer Abfrage

    Hi,

    Ich habe mal ein Problem mit einer Abfrage, bekomm die einfach nicht hin.

    Also so soll das Ergebnis aussehen.
    Code:
    TeileNr		Teilenname	Anzahl von Teile	Anzahl von Teile As Erledigt
    Tablle1		Tabelle2	Tabelle1		Tabelle1
    Gruppiert						Where Erledigt =-1
    Das Problem an der Sache ist das bei der Unterabfrage von Erledigt kein Datensatz gefunden werden kann. In diesem fall soll in der Zelle eine 0 stehen.

    Ich hab das mal so versucht:

    Code:
    SELECT Tabelle1.TeileNr, Tabelle2.Teilenname, COUNT(Tabelle1.Teile) AS Teile
    ,(SELECT Count(Tabelle1.Teile)  FROM Tabelle1 GROUP BY Tabelle1.TeileNr) AS Erledigt
    FROM Tablle1 INNER JOIN Tabelle2 ON Tablle1.TeileNr = Tabelle2.ID
    GROUP BY Tablle1.TeileNr;
    Hat aber leider nicht funktioniert.

  • #2
    [highlight="sql"]
    SELECT
    t1.TeileNr, t2.Teilenname, COUNT(t11.Teile) AS Teile,
    (SELECT Count(Teile) from Tabelle FROM Tabelle1 ehere teilenr = t1.TeileNr) AS Erledigt
    FROM
    Tabelle1 t1 INNER JOIN Tabelle2 t2 ON Tablle1.TeileNr = Tabelle2.ID
    GROUP BY
    T1.TeileNr;
    [/highlight]

    Comment


    • #3
      Danke schon mal, aber das kann nicht ganz richtig sein.
      Bei der Unterabfrage handelt es sich um die Anzahl der Datensätze wenn das Feld Erledigt den Wert „-1“ hat. Sollte kein Datensatz gefunden werden muss eine 0 in der Zelle stehen.
      Was ja normal nicht der Fall ist

      Gruß Patrick

      Comment


      • #4
        [highlight="sql"]
        SELECT
        t1.TeileNr, t2.Teilenname, COUNT(t11.Teile) AS Teile,
        COALESCE ((SELECT Count(Teile) FROM Tabelle1 WHERE teilenr = t1.TeileNr),0) AS Erledigt
        FROM
        Tabelle1 t1 INNER JOIN Tabelle2 t2 ON Tablle1.TeileNr = Tabelle2.ID
        GROUP BY
        T1.TeileNr;
        [/highlight]

        Comment


        • #5
          Hallo,

          das einfachste wäre den "Erledigt"-Fall mit einem CASE auszuwerten:

          [highlight=sql]
          SELECT Tabelle1.TeileNr, Tabelle2.Teilenname,
          COUNT(Tabelle1.Teile) AS Teile,
          COUNT(
          CASE Tabelle1.erledigt
          when -1 then Tabelle1.erledigt
          else NULL
          end) AS Erledigt
          FROM Tablle1
          INNER JOIN Tabelle2 ON Tablle1.TeileNr = Tabelle2.ID
          GROUP BY Tablle1.TeileNr, Tabelle2.Teilenname;
          [/highlight]

          Gruß Falk
          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