RobRobson: Count im Subquery

Hallo Forum,
ich bekomms grade  nicht mehr auf die Reihe ein Zählergebniss eines Subquerys in der Ausgabezeile anzuzeigen.
Würde mich freuen wenn mir jemand mit nem Tip auf die Sprünge helfen kann.

In einem Protkoll sind eine Liste von Dateien vermerkt die berechnet wurden und einige Ergebnisse dazu.

tab_A (Protokolle)
id | prot_datei | datum | tool | toleranz ...

tab_B (ergebnisse)
id | datei | ergbebniss |crunch | protokolldatei_id

tab_A (Protokolle) enthält zB. 10 Protokolle in denen jeweils einige Dutzent Dateien vermerkt sind und tab_B die Ergebnisse aus den protokollen.

Nun soll das mit einem Query so angezeigt werden:

Prot_Id | datum | Anzahl ferlerhafte Ergenbnisse

Der Query:
SELECT DISTINCT tab_A.id, datum, (SELECT COUNT(id) FROM ergbnisse WHERE ergebniss>0) AS fehler
FROM tab_A

Nun ist ja klar das ich in jeder Zeile den maximalen Count der Tabelle bekommen, also die Anzahl aller (fehlerhaften) Ergbnisse. Ich will aber nur die die zu der jeweiligen Protokollzeile gehören.

Wie stellt man das an?

Vielen Dank und viele Grüße,
Robson

Viele Grüße,
Rob

  1. Tach auch.

    Nun ist ja klar das ich in jeder Zeile den maximalen Count der Tabelle bekommen, also die Anzahl aller (fehlerhaften) Ergbnisse. Ich will aber nur die die zu der jeweiligen Protokollzeile gehören.

    Dann nutze doch im Subquery eine einschränkende Bedingung (mit WHERE), welche das Ergebnis auf die Zeilen aus "ergebnisse" beschränken, bei denen prot_id = tab_A.id gilt.

    Bis die Tage,
    Matti

    1. Hi, und Danke :)

      Tach auch.

      Dann nutze doch im Subquery eine einschränkende Bedingung (mit WHERE), welche das Ergebnis auf die Zeilen aus "ergebnisse" beschränken, bei denen prot_id = tab_A.id gilt.

      Ja das war ja auch mein erster Gedanke, aber ich weiß nicht mehr wie man die Verbindung zwischen innere und Äusserer Abfrage syncronisiert bekommt.

      Bis die Tage,
      Matti

      Viele Grüße,
      Rob

      1. Hi,

        Ja das war ja auch mein erster Gedanke, aber ich weiß nicht mehr wie man die Verbindung zwischen innere und Äusserer Abfrage syncronisiert bekommt.

        Wie wäre es mit *nachlesen*?
        http://dev.mysql.com/doc/refman/5.1/en/correlated-subqueries.html

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. so würde ich das lösen

    wenn du nur die angezeigt haben willst die wirklich fehlerhafte Haben dann lass das "left outer" weg.

    select prot.id, prot.datum, count(distinct erg.id) Anzahl
      from Protokolle prot
      left outer join ergebnisse erg on (prot.id = protokolldatei_id)
     where ergebniss > 0
     group by prot.id, prot.datum;