![]() |
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:
Ich brauche also eine Möglichkeit, dass sich die Tabelle User auf unterschiedliche Felder der DatenTabelle beim left join bezieht.
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 hoffe, mein Problem ist nachvollziehbar. Vielen Dank Patrick |
AW: Eine Tabelle mehrmals im left join
Verwende Aliase, dann geht das.
|
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 |
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 |
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:
|
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 |
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.
|
AW: Eine Tabelle mehrmals im left join
Ich lasse es auch immer weg.
|
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 |
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.
|
AW: Eine Tabelle mehrmals im left join
Zitat:
|
AW: Eine Tabelle mehrmals im left join
Zitat:
(und das war der Grund, warum er keine kurzen Alias-Namen verwendet hat) |
AW: Eine Tabelle mehrmals im left join
Zitat:
Zitat:
Wir haben hier eine Datenbank, bei der die Tabellen Namen wie 'CRIMKAM', 'CLIMADE', 'ERVIKAD', 'ACCMFTAS' usw. haben. Das hatten sich Spanier ausgedacht und meinten, wenn alle Tabellen genau 7 Buchstaben haben, wäre das cool. Und dafür verwende ich nun z.B. Aliase mit sprechenden Namen. Dabei ist mir dann aufgefallen, das der Code dann irgendwie lesbarer wird. Ist ja auch logisch. Und schlußendlich kann man auch bei Aliasen sprechende Namen verwenden, sofern es die Tabelle selbst nicht tut. Ich meine, beim Programmieren brechen wir uns einen ab, ordentliche Bezeichner zu verwenden, wieso nicht bei SQL? Hier sind wir tippfaul (mich eingeschlossen)? Im Ernst? |
AW: Eine Tabelle mehrmals im left join
Meine Tabellen haben im Allgemeinen sprechende Namen. Da darf der Alias auch mal kürzer ausfallen, IMHO leidet die Lesbarkeit dadurch nicht sonderlich.
|
AW: Eine Tabelle mehrmals im left join
Nun, ich habe auch u1... als Alias verwendet. Aber ich habe heute eine Menge über Alias gelernt.
Vielen Dank - das klappt prima! Gruß Patrick |
AW: Eine Tabelle mehrmals im left join
und da USER sehr oft ein reserviertes wort ist, solltest Du es noch einpacken:
Code:
SELECT * FROM [USER] u1 --...
|
AW: Eine Tabelle mehrmals im left join
Zitat:
SQL-Code:
Select * from "USER" u1 ...
|
AW: Eine Tabelle mehrmals im left join
Bei MySQL meist
SQL-Code:
, allerdings weiß ich nicht, wie UniDAC das intern handhabt.
SELECT * from `User` u1
|
AW: Eine Tabelle mehrmals im left join
Zitat:
Ich hab mir angewöhnt für "offizelle" Abfragen immer ein "as" zu nutzen dadurch wird es übersichtlicher. Und Aliase wie T1,T2.. sind absolut tabu. Gruß K-H |
AW: Eine Tabelle mehrmals im left join
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr. |
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