SQLer: 2 Fremdschlüssel auf dieselbe Tabelle

Hi,
ich hab folgendes Problem:
Ein User kann 2 Arbeitsplätzen (arbeit_int, arbeit_ext)zugeordnet sein, und ich möchte in einem Statement die User-Id und beide Arbeitsplätze-Namen selektieren:

User
----
id
Name
arbeit_int
arbeit_ext

Arbeitsplatz
----
id
Name

Ich hab keine Ahnung wie ich das machen soll....

  1. Ein User kann 2 Arbeitsplätzen (arbeit_int, arbeit_ext)zugeordnet sein, und ich möchte in einem Statement die User-Id und beide Arbeitsplätze-Namen selektieren:

    Welches Datenbanksystem in welcher Version? Ansonsten:

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  2. Hallo,

    Ein User kann 2 Arbeitsplätzen (arbeit_int, arbeit_ext)zugeordnet sein, und ich möchte in einem Statement die User-Id und beide Arbeitsplätze-Namen selektieren:

    User

    id
    Name
    arbeit_int
    arbeit_ext

    Arbeitsplatz

    id
    Name

    das habe ich in diesem Archivposting erläutert. Arbeite mit Aliasnamen und joine die Arbeitsplatztabelle zweimal mit der Usertabelle.

    Es ist übrigens eine gute Idee, das Primärschlüsselfeld nicht einfach id,
    sondern z.B. user_id und arbeitsplatz_id zu nennen.

    Mit freundlichen Grüßen

    Vinzenz

    1. das habe ich in diesem Archivposting erläutert. Arbeite mit Aliasnamen und joine die Arbeitsplatztabelle zweimal mit der Usertabelle.

      Es ist übrigens eine gute Idee, das Primärschlüsselfeld nicht einfach id,
      sondern z.B. user_id und arbeitsplatz_id zu nennen.

      Mit freundlichen Grüßen

      Vinzenz

      Hi Vinzenz,
      vielen Dank, ich denke damit kann ich das Problem lösen.
      Ist ja eigentlich simpel, aber da muss man erst drauf kommen ;)
      cheers

  3. ich hab folgendes Problem:
    Ein User kann 2 Arbeitsplätzen (arbeit_int, arbeit_ext)zugeordnet sein, und ich möchte in einem Statement die User-Id und beide Arbeitsplätze-Namen selektieren:

    User

    id
    Name
    arbeit_int
    arbeit_ext

    Arbeitsplatz

    id
    Name

    Wir sollten da erst einmal das Datendesign betrachten. Wir haben bisher die Entitäten "Benutzer" und "Arbeitsplätze".

    Jetzt besteht zwischen den Entitäten welche Beziehung? Ein Benutzer kann zwei Arbeitsplätze haben. Das hört sich schon besser (einfacher) an als "Ein User kann 2 Arbeitsplätzen zugeordnet sein.".

    Hast Du schon mal bspw. sowas probiert:

      
    SELECT  
     User.id,  
     User.Name,  
     Arbeitsplatz1.Name,  
     Arbeitsplatz2.Name  
    FROM  
     User  
    JOIN  
     Arbeitsplatz ON (Arbeitsplatz.id = User.arbeit_int) AS Arbeitsplatz1  
    JOIN  
     Arbeitsplatz ON (Arbeitsplatz.id = User.arbeit_ext) AS Arbeitsplatz2  
    ORDER BY  
     User.id ASC