Odium: Ist ein Join das richtige?

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

  1. 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

  2. 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

  3. 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

  4. 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