Announcement

Collapse
No announcement yet.

Join über zwei Attribute?

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

  • Join über zwei Attribute?

    Hallo!

    Ich habe ein Problem mit dem richtigen Joinen mehrerer Tabellen.

    Ich habe folgende Tabellen:

    Eintrag --> ID | UserID | UserType ...
    Mitarbeiter --> ID | Name ...
    Kunde --> ID | Name ...
    Extern --> ID | Name ...

    Es geht mir darum, so zu joinen, dass je nach UserType (0 für Mitarbeiter, 1 für Kunden, 2 für Externe) in der Tabelle "Eintrag" mit der UserID aus selbiger Tabelle die jeweiligen Personen über ihre ID hineinzubekommen. Sprich: eine ID kann für eine Person auch durchaus zweimal vorkommen, aber nur aufgrund der Unterscheidung in Mitarbeiter, Kunden und Externen.
    Im Prinzip dreht es sich hier also um die Tabelle "Eintrag", in die mittels UserID und UserType auf die entsprechende Personentabelle geschlossen werden muss.

    Ich hoffe ich habe mich einigermaßen klar ausdrücken können. Wie würdet ihr das machen?

    Gruß

  • #2
    Hallo,

    um es kurz zu sagen, das Tabellendesign ist Murks und mit einem einfachen Join bekommst du das nicht hin! Am einfachsten ist da wohl noch sowas:

    [highlight=sql]
    select a.ID, a.UserID, a.UserType, b.Name
    from Eintrag a
    inner join Mitarbeiter b on b.ID = a.UserID and a.UserType = 0
    union
    select a.ID, a.UserID, a.UserType, b.Name
    from Eintrag a
    inner join Kunde b on b.ID = a.UserID and a.UserType = 1
    select a.ID, a.UserID, a.UserType, b.Name
    from Eintrag a
    inner join Extern b on b.ID = a.UserID and a.UserType = 2
    [/highlight]

    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


    • #3
      ...oder sowas:
      [highlight=sql]
      SELECT a.ID, a.UserID, a.UserType, b.Name
      from Eintrag a
      inner join (
      select ID, Name, 0 UserType from Mitarbeiter
      union
      select ID, Name, 1 UserType from Kunde
      union
      select ID, Name, 2 UserType from Extern
      ) b on b.ID = a.UserID and b.UserType = a.UserType
      [/highlight]

      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

      Working...
      X