Ist ein Join das richtige?
Odium
- datenbank
Hallo,
der Titel ist relativ nichtssagend, aber ich wußte es nicht besser.
Zum problem:
Ich habe 2 Tabellen, die erste ist die Haupttabelle, hier sind einzelne Geräte eingetragen. In der zweiten tabelle sind Datensätze zum jeweiligen Gerär eingetragen, z.B. Handlungen wie Reparatur o.ä. die an diesem Gerätr vorgenommen wurden. in der zweiten tabelle können natürlich auch mehrere datensätze für ein Gerät enthalten sein.
Nun möchte ich die datensätze der ersten tabelle anzeigen und weiterhin die Anzahl der Einträge für das entsporechende Gerät in der zweiten Tabelle.
Ich habe mir bis jetht so geholfen, das ich normal die erste tabelle abfrage und innerhalb dieser Ausgabeschleife nochmal mit der Geraete_ID in die zweite Tabelle gehe, alles auswählte wo die Geraete_ID übereinstimmt und dann einen zaehler hochzaehle für die anzahel der einträge.
Funktioniert auch soweit, aber es ist wohl nicht gerade resourcenschonend, die ganze abfragerei in schleifen.
Nun gibtv es ja die möglichkeit über joins tabellenünergreifend informationen zu holen, aber ich krieg den nicht zusammen, da ja der gewünschte wert aus der zweiten tabelle keine datensätze sind, sondern die anzhal der passenden datensätze.
Kann jemand helfen? Ein kleines Beispiel würde schon genügen.
Danke
Odium
Hi Odium!
Also grundsätzlich geht das so:
select * from tabelle1,tabelle2 where tabelle1.nr=tabelle2.nr
Wobei dann nr ein Datensatz ist, der in beiden Tabellen identisch ist und dadurch die Verknüpfung erstellt.
Hope that helps.
Bis denne,
Dennis
Hallo,Odium
Ich denke, dieses Statement sollte es tun:
SELECT count(info) Anzahl, MAX(beschreibung) typ FROM table1, table2 WHERE table1.id1 = table2.id1
GROUP BY table1.id1
mit 2 Tabellen, wobei info in table2 ein Inhaltsfeld ist, beschreibung in table1 ein Inhaltsfeld ist
table1.id1 ist der Primärschlüssel in table1
table2.id1 ist der Fremdschlüssel in table2 auf table1
HTH
Grüße Frank
Hallo Odium,
zu Deiner Frage im Titel "Ist ein Joint das richtige?" kann es nur eine Antwort geben:
******************************
* Drogen sind keine Lösung ! *
******************************
*SCNR*
*verzeihmir*
Herzliche Grüße,
Meg
Hallo Odium!
Ich habe 2 Tabellen, die erste ist die Haupttabelle, hier sind einzelne Geräte eingetragen. In der zweiten tabelle sind Datensätze zum jeweiligen Gerär eingetragen, z.B. Handlungen wie Reparatur o.ä. die an diesem Gerätr vorgenommen wurden. in der zweiten tabelle können natürlich auch mehrere datensätze für ein Gerät enthalten sein.
Nun möchte ich die datensätze der ersten tabelle anzeigen und weiterhin die Anzahl der Einträge für das entsporechende Gerät in der zweiten Tabelle.
Ich löse das gerne mit Unterabfragen:
SELECT
Geraet.ID,
Geraet.Name,
(select Count(*) from Reparatur where ID = Reparatur.Ger_ID) as Anzahl
FROM Geraet;
Die Tabellen sehen jetzt so aus:
Geraet
ID
Name
Reparatur
R_ID Name darf nicht ID sein sonst funktioniert die Unterabfrage nicht
Ger_ID
Geschreibung
Outer Joins sollten eigentlich auch funktionieren, aber da ist die Syntax abhängig von der Datenbank.
Viele Grüße
H-P Ortner