JOIN auf gleiche Tabelle

scflocke

Neuer Benutzer
Beiträge
1
Moin Moin,

ich habe folgendes Problem:
Tabelle Node mit den Spalten IDNode, IDParent und NodeName
Tabelle Alarm mit den Spalten IDNode und Acknowledged

Die IdNode in der Tabelle Node stellen verschiedene Fehler dar, welche bei den verschiedenen IDParent auftreten können. In NodeName steht der Fehlername.
In der Tabelle Alarm sind die aufgetretenen Fehler IDNode aufgelistet und die Bestätigung in der Spalte Acknowledged mit 0 oder 1.

Ich möchte nun zu jeder IDParent die nicht bestätigten Fehler wissen. Das habe ich wie folgt gelöst, was auch läuft:

SELECT Node.IDParent AS IDParent, COUNT(Node.IDParent) AS Anzahl
FROM Alarm JOIN Node
ON Alarm.IDNode = Node.IDNode
WHERE Alarm.Acknowledged ='0'
GROUP BY Node.IDParent

Ergebnis sieht zB so aus:

IDParent Anzahl
6 100
7 64
8 256

Nun möchte ich die IDParent dem NodeName zuordnen, bzw. auch eine Spalte NodeName haben. In der Tabelle Node sind unter IDNode nämlich unter 6,7 und 8 in der Spalte NodeName die Klarnamen gespeichert. Ich benötige also in meiner Ergebnistabelle noch eine dritte Spalte (zB Name), welche die IDParents der Ergebnistabelle mit den IDNodes der Tabelle Node vergleicht und den zugehörigen Wert der Spalte NodeName in die Ergebnistabelle einträgt.
Dieses hört sich für mich nach einem weiteren JOIN an, aber egal was ich versuche, es funktioniert nicht.
 
Werbung:
Du joinst dieses Ergebniss noch einmal mit der anderen Tabelle. Das könnte z.B. via WITH-Systax so erfolgen:

WITH foo as (hier die Abfrage von oben) select * from foo left join Node on foo.idparent = node.idnode
 
Zurück
Oben