Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feld anderer Tabelle zweimal abfragen (https://www.delphipraxis.net/126857-feld-anderer-tabelle-zweimal-abfragen.html)

TheMiller 3. Jan 2009 18:14

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

Feld anderer Tabelle zweimal abfragen
 
Hallo Jungs & Mädels,

ich habe eine Benutzertabelle, die unter anderem auch den echten Namen enthält (realname) und eine andere Tabelle, die unter anderem folgende Informationen enthält: Eintrag für [realname], eingetragen von [realname].

Die Tabellen sehen so aus:

Code:
[b]benutzer[/b]

benutzerid | username | realname | status | rang [...]

[b]notizen[/b]

notizid | empfaenger | notiz | eingetragenvon | [...]
Ein Datensatz sieht also so aus:

Code:
benutzer

1 | userA | Max Mustermann | 0 | 1
2 | userB | Jen Jennsen | 0 | 2

notizen

1 | 1 | Ich brauche eine Pause | 2
Einen SQL-Join bekomme ich so hin, dass entweder der Empfänger oder aber derjenige angezeigt wird, der die Notiz hinterlassen hat. Ich bekomme aber beides nicht gleichzeitig hin.

Könnt ihr mir helfen? Danke im Voraus!

mkinzler 3. Jan 2009 18:26

Re: Feld anderer Tabelle zweimal abfragen
 
In dem du die gleiche Tabelle 2 mal dazu joinst und 2 verschiedene Aliase verwendest

TheMiller 3. Jan 2009 19:44

Re: Feld anderer Tabelle zweimal abfragen
 
Hallo,

ich habe es jetzt so gemacht, wie du es gesagt hast, aber da kommt trotzdem nicht das richtige Ergebnis raus: Hier mal die SQL

SQL-Code:
SELECT notizen.*, benutzer.realname AS 'name1', benutzer.realname AS 'name2' FROM notizen AS notizen LEFT JOIN benutzer AS benutzer ON (notizen.addedby = benutzer.uid) LEFT JOIN benutzer AS benutzerZwei ON (notizen.empfaenger = benutzer.uid);
Doch bei den Ergebnissen bekomme ich beides Mal "Max Mustermann" angezeigt.

Oder habe ich dich falsch verstanden, sodass mein Statement falsch ist?

mkinzler 3. Jan 2009 19:50

Re: Feld anderer Tabelle zweimal abfragen
 
Es ist gefährlich den Alias wie eine Tabelle zu nennen
SQL-Code:
SELECT
    n.*,
    b1.realname AS 'EmpfaengerName',
    b2.realname AS 'EintragerName'
FROM
    notizen n
        LEFT JOIN benutzer b1 ON b1.uid = n.addedby
        LEFT JOIN benutzer b2 ON b2.uid = n.empfaenger;

TheMiller 3. Jan 2009 19:59

Re: Feld anderer Tabelle zweimal abfragen
 
Tatsache. Das funktioniert!

Diese Schreibweise mit den Alias kannte ich so wirklich noch nicht. Tja, man lernt nie aus.

Vielen Dank :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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