Tabelle mit mehreren gleichen Bezügen

  • C#

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von shadow01.

    Tabelle mit mehreren gleichen Bezügen

    Hallo zusammen

    Ich habe mein Tool etwas weitergebaut und dabei ein neues Problem erhalten. Ich möchte nun das ich zwei Adresse nspeichern kann, zum Beispiel für Privat und geschäflicher Kontakt. Dabei habe ich ein Problem beim Abfrgen von PLZ/Ort.
    Die Tabelle:

    tb_Kontakt
    ID, ID_Vorname, ID_Name, Strasste, ID_PLZ, Strasse2, ID_PLZ2

    tb_Ort
    ID, PLZ, Ort

    SQL-Abfrage

    1. SELECT tb_kontakt.ID, Vornamte, Name, Strasse, PLZ, Ort, Strasse2 (?und hier plz2,ort2???)
    2. FROM tb_Kontakt, tb_plz, ...
    3. WHERE ... AND tb_kontakt.ID_Plz=tb_plz.ID


    nun kann ich natürlich nach Strasse2 nicht nochmals PLZ, Ort abfragen da es ja das selbe Resultat wäre. Wie kann ich dies nun lösen?
    Ich habe vieles über n:m Beziehungen probiert ebenfals mit JOIN oder auch:

    SQL-Abfrage

    1. SELECT k.ID, k.Strasse, PLZ
    2. FROM tb_kontakt k, tb_plz p
    3. WHERE k.ID_PLZ=p.ID
    4. union
    5. SELECT a2.ID, a2.Strasse, PLZ
    6. FROM tb_adr2 a2, tb_plz p
    7. WHERE a2.ID_Plz=p.ID

    was dan aber halt zwei Zeilen ergibt.

    Kann die PLZ2 und Ort2 als Variable verarbeitet werden und ausgegeben werden?

    Ziel wäre folgende Ausgabe:
    ID Vorname Name Strasse PLZ Ort StrasseG PLZG OrtG (G=Geschäftsadresse)
    1 Hans Muster Str.1 1111 irgen Str.2 2222 wo


    Gruss und danke für eure Hilfe

    shadow01 schrieb:

    nun kann ich natürlich nach Strasse2 nicht nochmals PLZ, Ort abfragen
    Doch. Könntest du.

    SQL-Abfrage

    1. SELECT tb_kontakt.ID, Vorname, Name, Strasse, Ort1.PLZ, Ort1.Ort, Strasse2, Ort2.PLZ AS PLZ2, Ort2.Ort AS Ort2
    2. FROM tb_Kontakt JOIN tb_Ort AS Ort1 ON tb_kontakt.ID_Plz=tb_plz.ID JOIN tb_Ort AS Ort2 ON tb_kontakt.ID_Plz2=tb_plz.ID


    Aber ich ziehe dein Datenmodell leicht in Zweifel.
    Sinnvoll wäre bei 2 Adressen pro Kunde nicht nur PLZ und Ort vorzuhalten.
    Sondern eine extra Tabelle Adressen, auf die im Hauptdatensatz per AdressID verlinkt wird.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo petaod

    Danke dir für deine Hilfe
    ich habe nun zum test die Abfrage verkürzt

    SQL-Abfrage

    1. SELECT Strasse, ort1.PLZ, Strasse2, ID_PLZ2
    2. FROM tb_kontakt
    3. JOIN tb_ort AS ort1 ON tb_kontakt.ID_PLZ = tb_ort.ID


    leider erhalte ich immer den Fehler: "SQL Fehler(1054): Unknown column 'tb_ort.ID' in 'on clause'" Diese Tabelle sowie Spalt existiert jedoch. Weisst du woher der Fehler kommt?

    Nachtrag:
    In den joins darf nicht die Tabelle in Form von tb_ort.ID sondern als AS Var in diesem Fall ort1.ID und ort2.ID verwendet werden.

    SQL-Abfrage

    1. SELECT tb_kontakt.Strasse, ort1.PLZ, tb_kontakt.Strasse2, ort2.PLZ
    2. FROM tb_kontakt
    3. JOIN tb_ort AS ort1 ON tb_kontakt.ID_PLZ = ort1.ID INNER JOIN tb_ort AS ort2 ON tb_kontakt.ID_PLZ2 = ort2.ID


    Gruss und Danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „shadow01“ ()