Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Probleme bei einer Abfrage

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von datenmaus, 24 April 2013.

  1. datenmaus

    datenmaus Benutzer

    Hallo,

    ich habe eine Tabelle "Namen" in der gibt es ein Feld "Superid".
    eine weiter Tabelle "Schlüssel" und eine Tabelle "Schlüsselname"
    In der Tabelle Schlüssel gibt es die "Superid" aus der Tabelle "Namen" und das Feld "Schlüsselid"
    In der Tabelle "Schlüsselname" gibt es eine "ID" und das Feld "Bezeichnung".

    ich habe nun ein select auf "Namen", alles gut.
    Nun brauche ich aber noch zu dem Select auf die Tabelle "Namen" in der Ausgane auch noch das Feld "Bezeichnung" aus Tabelle "Schlüsselname".

    Select * from dbo.Name,dbo.schlüssel,dbo,schlüsselname where name.superid=schlüssel.superid

    ????
    Kann mir jemand helfen.

    Danke
     
  2. Tommi

    Tommi Datenbank-Guru

    Hallo datenmaus,

    nach erstem Verständnis hätte ich gesagt, dass die Tabellen in hierarschischem Aufbau zuainander stehen:

    [Namen] -- (Superid) -- [Schlüssel] -- (Schlüsselid) -- [Schlüsselname]

    Schau mal nach, ob es in der Datenbank FKeys und Beziehungen gibt. Dafür kannst du z.B. die Tabellen einfach einmal in ein Datenbankschema ziehen (im SQL Server Management Studio)
    Dann kannst du die Abhängigkeiten auch direkt grafisch dargestellt bekommen und ermitteln (falls diese vorhanden sind).

    Eine Abfrage sähe dann meiner Meinung nach wie folgt aus:

    Code:
    SELECT  [...]
    FROM Namen N
    LEFT OUTER JOIN Schlüssel S
       INNER JOIN Schlüsselname SN
          ON S.Schlüsselid=SN.ID
       ON N.Superid=S.Superid
    Viele Grüße,
    Tommi
     
  3. akretschmer

    akretschmer Datenbank-Guru


    • Umlaute in Tabellen- und Spaltennamen bitte vermeiden
    • verwende expliziete JOIN-Syntax
    • bei Dir ist ein Komma, wo sicherlich ein Punkt sein sollte (dbo,schlüsselname)

    Code:
    test=*# \d namen
         Table "public.namen"
     Column  |  Type   | Modifiers
    ---------+---------+-----------
     superid | integer | not null
    Indexes:
        "namen_pkey" PRIMARY KEY, btree (superid)
    Referenced by:
        TABLE "schluessel" CONSTRAINT "schluessel_superid_fkey" FOREIGN KEY (superid) REFERENCES namen(superid)
    
    test=*# \d schluessel
         Table "public.schluessel"
        Column    |  Type   | Modifiers
    --------------+---------+-----------
     superid      | integer |
     schluesselid | integer |
    Foreign-key constraints:
        "schluessel_schluesselid_fkey" FOREIGN KEY (schluesselid) REFERENCES schluesselname(schluesselid)
        "schluessel_superid_fkey" FOREIGN KEY (superid) REFERENCES namen(superid)
    
    test=*# \d schluesselname
       Table "public.schluesselname"
        Column    |  Type   | Modifiers
    --------------+---------+-----------
     schluesselid | integer | not null
     bezeichnung  | text    |
    Indexes:
        "schluesselname_pkey" PRIMARY KEY, btree (schluesselid)
    Referenced by:
        TABLE "schluessel" CONSTRAINT "schluessel_schluesselid_fkey" FOREIGN KEY (schluesselid) REFERENCES schluesselname(schluesselid)
    
    test=*# select n.*, sn.bezeichnung from schluessel s left join namen n on s.superid=n.superid left join schluesselname sn on s.schluesselid=sn.schluesselid;
     superid | bezeichnung
    ---------+-------------
    (0 rows)
    
    Andreas
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden