Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Eine Tabelle mehrmals im left join (https://www.delphipraxis.net/175538-eine-tabelle-mehrmals-im-left-join.html)

Ykcim 29. Jun 2013 12:46

Datenbank: MySQL • Version: 5 • Zugriff über: UniDac

Eine Tabelle mehrmals im left join
 
Hallo Zusammen,

ich komme gerade mit einer Abfrage nicht weiter und hoffe, dass Ihr mir helft.

Ich habe die User in einer Tabelle (User_ID, Name, ...)

In einer anderen Tabelle habe ich in jeder Zeile folgende Daten: ID, Daten1, User_ID1, Daten2, User_ID2, ...

Ich möchte jetzt in meiner Abfrage die Daten 1 und 2 die UserNamen 1 und 2 zu den User_IDs rausholen.

Hier ein Ansatz:
Delphi-Quellcode:
select DatenTabelle.Daten1, User.Username, DatenTabelle.Daten2, User.Username
from DatenTabelle
left join User on User.User_ID=DatenTabelle.User_ID1
left join User on User.User_ID=DatenTabelle.User_ID2 //Das gibt natürlich einen Fehler
Ich brauche also eine Möglichkeit, dass sich die Tabelle User auf unterschiedliche Felder der DatenTabelle beim left join bezieht.
Ich hoffe, mein Problem ist nachvollziehbar.

Vielen Dank
Patrick

mkinzler 29. Jun 2013 12:50

AW: Eine Tabelle mehrmals im left join
 
Verwende Aliase, dann geht das.

DeddyH 29. Jun 2013 12:50

AW: Eine Tabelle mehrmals im left join
 
Benutze Tabellenaliase.
SQL-Code:
SELECT
  DatenTabelle.Daten1,
  User1.Username,
  DatenTabelle.Daten2,
  User2.Username
FROM
  DatenTabelle
LEFT JOIN
  User User1 ON User1.User_ID=DatenTabelle.User_ID1
LEFT JOIN
  User User2 ON User2.User_ID=DatenTabelle.User_ID2

Ykcim 29. Jun 2013 14:34

AW: Eine Tabelle mehrmals im left join
 
Das verstehe ich leider nicht. Es gibt daoch auf meinem Server keine Tabelle User1 oder User2, sondern nur User. Wie muss ich das denn angeben, dass der MySQL-Server das versteht?

Vielen Dank
Patrick

mkinzler 29. Jun 2013 14:37

AW: Eine Tabelle mehrmals im left join
 
Usee1 und User2 sind Aliase für die Tabelle User. Sie sind Platzhalter für 2 Instanzen der Tabelle.
Zitat:

Wie muss ich das denn angeben, dass der MySQL-Server das versteht?
Genau so wie geschrieben

Ykcim 29. Jun 2013 14:55

AW: Eine Tabelle mehrmals im left join
 
Wer lesen kann ist klar im Vorteil...:oops:

Ich hatte überlesen, dass da "user user1." steht. Dann klappt es auch.

Vielen Dank und noch einen schönen Samstag

Patrick

DeddyH 29. Jun 2013 14:55

AW: Eine Tabelle mehrmals im left join
 
Vielleicht sollte ich mir angewöhnen, auch bei Tabellenaliasen das AS zu verwenden, ich mach das sonst nur bei Feldaliasen.

mkinzler 29. Jun 2013 15:01

AW: Eine Tabelle mehrmals im left join
 
Ich lasse es auch immer weg.

Sir Rufo 29. Jun 2013 17:16

AW: Eine Tabelle mehrmals im left join
 
Ich nehme für einen Alias immer einen sehr kurzen Namen (die Tabellen-Namen sind sprechend), dann weiß ich, dass es ein Alias ist ;)
SQL-Code:
SELECT
  d.Daten1,
  u1.Username,
  d.Daten2,
  u2.Username
FROM
  DatenTabelle d
LEFT JOIN
  User u1 ON u1.User_ID=d.User_ID1
LEFT JOIN
  User u2 ON u2.User_ID=d.User_ID2

DeddyH 29. Jun 2013 18:20

AW: Eine Tabelle mehrmals im left join
 
Ich eigentlich auch (allein schon aus Tippfaulheit), aber diesmal wollte ich das Prinzip besonders hervorheben. Ist wohl danebengegangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz