Announcement

Collapse
No announcement yet.

Datensatz zurückgeben auch wenn es keinen Fremdschlüssel gibt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensatz zurückgeben auch wenn es keinen Fremdschlüssel gibt

    Hallo,

    ich habe 2 Tabellen (stark vereinfacht):

    Tabelle 1: tblPerson
    -------------------------
    Spalte 1: PersonID
    Spalte 2: Name
    Spalte 3: Vorname

    Tabelle 2: tblAdresse
    ---------------------------
    Spalte 1: AdresseID
    Spalte 2: Ort
    Spalte 3: PersonID (Fremdschlüssel, zeigt auf Primärschlüssel von Tabelle 1)

    Ich benötige den Namen und Vornamen aus Tabelle1 (tblPerson) sowie den Ort aus Tabelle2 (tblAdresse). Nun kann es aber sein, daß es keinen Verweis von Tabelle 2 auf Tabelle 1 gibt. Es soll aber dennoch der Datensatz mit dem Namen+Vornamen zurückgegeben werden. Also egal ob es eine Relation zwischen den Tabellen gibt, möchte ich immer die Daten aus Tabelle 1 angezeigt bekommen.

    Geht das überhaupt?

    Mein bisheriger SQL-String sieht so aus:
    SELECT tblPerson.Name, tblPerson.Vorname, tblAdresse.Ort FROM tblPerson, tblAdresse WHERE tblPerson.PersonID=tblAdresse.PersonID

    Ich freue mich über jede Hilfe oder Tipp.

    Gruß
    Paul

  • #2
    Dein Freund ist ein Left outer Join. Für viele DBMS schaut der relevante Teil so aus:

    Code:
    .. FROM tblPerson left (outer) join tblAdresse on tblPerson.PersonID=tblAdresse.PersonID
    genaue SQL-Syntax übernimmst du der Dokumentation deines eingesetzten DBMS.

    Comment


    • #3
      Vielen dank für die schnelle Antwort. Bisher habe ich Joins immer gemieden, da ich finde, daß dadurch der SQL-String sehr unübersichtlich wird. Jetzt muß ich wohl...
      Vielen Dank nochmal.

      Gruß
      Paul

      Comment


      • #4
        Originally posted by paul30k View Post
        ... da ich finde, daß dadurch der SQL-String sehr unübersichtlich wird. Jetzt muß ich wohl...
        Vielen Dank nochmal.

        Gruß
        Paul
        Das ist auch mal ne Begründung

        Comment


        • #5
          Hallo,
          Originally posted by paul30k View Post
          ...Bisher habe ich Joins immer gemieden, da ich finde, daß dadurch der SQL-String sehr unübersichtlich wird. ...
          Das glaube ich kaum! Mglws. hast du bisher auf die EXPLIZITE Formulierung eines Joins verzichtet, aber auf einen Join wohl kaum. Auch ein implizit über die Where-Klausel formulierter Join ist ein JOIN!

          Ich persönlich halte die explizite Formulierung für "übersichtlicher", da hier eine saubere Trennung von Join-Bedingung(en) und tatsächlichen Bedingungen zur Einschränckung der Datenmenge möglich ist. Beim impliziten Join "verschwimmt" das alles in der Where-Klausel.

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Wieder was gelernt. Muß mich leider noch zu den Anfängern zählen.
            Momentan finde ich es für mich noch übersichtlicher ohne "JOIN" in der WHERE-Bedingung zu arbeiten und bis jetzt kam ich damit auch gut über die Runden. Das scheint sich gerade zu ändern...

            Comment

            Working...
            X