Count im Subquery
RobRobson
- datenbank
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
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
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
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
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;