Join und Auswahl



  • Hallo,

    ich habe ein kleines Problem, wo ich nicht drauf komm.
    Und zwar hab ich 2 Tabellen. Eine Allgemein Tabelle und ein Adress Tabelle

    Mit einem Join Verknüpfe ich die Adress Tabelle zur Allgemein Tabelle.In der Adress Tabelle gibt es unterschiedliche Adress Funktionen.
    Nun möchte ich folgendes:

    Und zwar möchte ich verschiedene Einträge aus beiden Tabellen ansehen (SELECT).
    Aus der Adress Tabelle möchte ich aber nur die Adresse mit der Funktion XY, wenn diese nicht vorhanden , dann die Adresse mit Funktion ZY, wenn diese nicht vorhanden soll die Adresse leer bleiben.

    Hat jemand eine Idee?



  • selektiere alle Adressen mit der Funktion XY, alle Adressen mit der Funktion ZY, die keine Adresse mit der Funktion XY besitzen (über Fremdschlüsselwert vergleichen) und dann ein right join an die Allgemeine Tabelle.



  • Kannst Du das mal als Code darstellen?
    Ich kann es mir nicht vorstellen, wie Du das meinst...



  • SELECT * FROM Allgemein
    LEFT JOIN (
    SELECT * FROM Adresse WHERE isau
    UNION SELECT * FROM Adresse WHERE keyallgemein NOT IN (SELECT keyallgemein FROM Adresse WHERE isau)
    ) v ON keyallgemein=idallgemein
    

    isau = TRUE ist Deine XY, isau = FALSE ist Deine ZY



  • Und wenn beide nich vorhanden, dann soll ja keine Adresse dargestellt werden, aber der Rest aus der Tabelle allgemein aber schon.



  • left join, LEFT JOIN!



  • Das geht nicht.
    Wenn keine der beiden Adressen da ist, wird gar nichts dargestellt.
    Es soll aber der Rest angezeigt werden, nur nicht die Adresse
    z.B.

    Nr.  Adresse    Funktion    Bez
    1    blabla     IN          offen
    2    blabla     ET          nicht offen
    3                           offen
    

    Bei Nr 3 gibt es keine Adresse mit der IN oder ET Funktion.
    Also wird alles dargestellt, nur die Adresse bleibt frei.....



  • Also nach langer Suche hab ich es gefunden.
    Da war noch ein versteckter inner join.
    Drum....

    Merci für all die Antworten.......

    CU



  • 2x LEFT JOIN + 1x ISNULL?


Anmelden zum Antworten