Abfrage über mehrere Tabellen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Thomas2705.

    Abfrage über mehrere Tabellen

    Ich möchte eine einfache Abfrage über mehrere Tabellen ausführen:

    TabelleA
    TabelleB
    TabelleC

    SQL-Abfrage

    1. ​SELECT TabelleA.*,TabelleB.*,TabelleC.* FROM TabelleA, TabelleB, TabelleC


    Diese Abfrage in der einfachsten Form sollte doch funktionieren tut es aber nicht. Habe ich etwas übersehen?
    Das Ziel sollte sein eine Abfrage über drei Tabellen zu erstellen. Die Tabellen sind über 1:n miteinander verknüpft und ich nahm an das ich die ABfrage Stück für STück aufbauen kann. Im Original sieht es so aus:

    ds_stamm
    ds_vertrag
    aufgabe

    Es gibt die Beziehung 1:n zwischen ds_stamm:ds_vertrag; ds_vertrag:aufgabe

    Die Datenmengen sind relativ groß und ich brauche die Abfrage über drei Tabellen. Allerdings reagiert das zu ladende Fenster beim Ausführen der Abfrage nicht mehr. Ich erhalte also auch keine richtige Fehlermeldung.
    Ja genau,
    ds_stamm.ds_stamm_id = Primärschlüsselfeld (bigint) : ds_vertrag.ds_vertrag_nr( bigint)
    ds_vertrag.ds_vertrag_id = Primärschlüsselfeld (bigint): aufgabe.aufgabe_nr (bigint)
    Wie bereits in Post#3 verlinkt wurde. JOIN ist das Zauberwort.
    Grundsätzlich z.B.:

    SQL-Abfrage

    1. SELECT Tabelle1.Spalte6, Tabelle2.Spalte9 FROM Tabelle2 INNER JOIN Tabelle2 ON Tabelle1.Spalte1 = Tabelle2.Spalte2

    bei ON wird angegeben, welche Spaltenwerte aus Tabelle1 eben mit den Spaltenwerten aus Tabelle2 übereinstimmen müssen, um einen tabellenübergreifenden Match zu erhalten.
    Welchen JOIN-Typ Du verwendest, musst Du entscheiden. Bei INNER JOIN z.B. gibt es nur ein Zeilenergebnis, wenn der Eintrag in beiden Tabellen vorhanden ist. Wenn eine Tabelle also nur optionale Daten enthält, ist INNER JOIN falsch.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    ...aber wie wird die dritte Tabelle "aufgabe.aufgabe_nr" eingefügt?
    So etwas habe ich jetzt gebastelt:

    SQL-Abfrage

    1. "SELECT ds_stamm.*, ds_vertrag.*
    2. FROM ds_vertrag
    3. INNER JOIN ds_vertrag
    4. ON ds_stamm.ds_stamm_id = ds_vertrag.ds_vertrag_nr"


    Update: Ich weiß es ist verpönt aber ich bekomme es nicht hin und es kotzt mich an. Ich habe ein PDF mit der Tabellenstruktur eingefügt. Die ABfage sollte irgendwie so aussehen:

    "SELECT ds_stamm.ds_stamm_id, aufgabe.aufgabe_id,aufgabe.aufgabe_stamm_id,aufgabe.aufgabe_vertrag_id,aufgabe.aufgabe_beginn,aufgabe.aufgabe_hinweis,ds_vertrag.ds_vertrag_nr
    FROM ds_stamm
    INNER JOIN aufgabe
    ON ds_stamm.ds_stamm_id = aufgabe.aufgabe_stamm_id
    WHERE aufgabe_stamm_id = '" & Me.ds_stamm_id.Text & "'
    AND aufgabe_kategorie ='Aufgabe zum Vorgang'
    INNER JOIN ds_vertrag
    ON ds_vertrag.ds_vertrag_id = aufgabe.aufgabe_vertrag_id"


    Dateien
    • Bild.pdf

      (148,94 kB, 53 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Thomas2705“ ()

    Ich habe es so angepasst:

    SQL-Abfrage

    1. Dim SQLString_Aufgabe = "SELECT ds_stamm.*,ds_vertrag.*,aufgabe.*
    2. FROM aufgabe
    3. INNER JOIN ds_vertrag on aufgabe_vertrag_id= ds_vertrag.ds_vertrag_id
    4. INNER JOIN ds_stamm
    5. ON ds_vertrag.ds_vertrag_nr = ds_stamm.ds_stamm_id
    6. WHERE aufgabe_stamm_id = '" & Me.ds_stamm_id.Text & "'
    7. AND aufgabe_kategorie ='Aufgabe zum Vorgang'"


    ...und es macht was es soll und "flotter Johann" ; ich küsse Deine Füße. 8o