AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Eine Tabelle mehrmals im left join
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Tabelle mehrmals im left join

Ein Thema von Ykcim · begonnen am 29. Jun 2013 · letzter Beitrag vom 2. Jul 2013
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#1

Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 13:46
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
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
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 13:50
Verwende Aliase, dann geht das.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 13:50
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 15:34
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
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 15:37
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
Markus Kinzler
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 15:55
Wer lesen kann ist klar im Vorteil...

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

Vielen Dank und noch einen schönen Samstag

Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 15:55
Vielleicht sollte ich mir angewöhnen, auch bei Tabellenaliasen das AS zu verwenden, ich mach das sonst nur bei Feldaliasen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 16:01
Ich lasse es auch immer weg.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 18:16
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

AW: Eine Tabelle mehrmals im left join

  Alt 29. Jun 2013, 19:20
Ich eigentlich auch (allein schon aus Tippfaulheit), aber diesmal wollte ich das Prinzip besonders hervorheben. Ist wohl danebengegangen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz