Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL bei JOIN gemeinsame Spalten nicht ausgeben (https://www.delphipraxis.net/69437-sql-bei-join-gemeinsame-spalten-nicht-ausgeben.html)

Angel4585 15. Mai 2006 09:47

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

SQL bei JOIN gemeinsame Spalten nicht ausgeben
 
Hallo zusammen,

ich hab folgendes Problem:

ich habe zwei Tabellen


-----------------
Kunden
-----------------
Spalten:
-----------------
ID
Name
Nachname
AdressID
BearbeitetVon
BearbeitungsDatum
-----------------


-----------------
Adressen
-----------------
Spalten:
-----------------
ID
Strasse
Ort
PLZ
BearbeitetVon
BearbeitungsDatum
-----------------

jetz verknüpfe ich diese beiden mit einem Join damit ich die Kunden z.B. nach PLZ sortiert ausgeben kann.

das Problem ist jetzt wenn ich in der WHERE - Klausel "BearbeitetVon" angebe kommt die Meldung das das Feld "zweideutig", was auch logisch erscheint.

D.h. ich muss jetzt irgendwie das "BearbeitetVon" der Adressen-Tabelle nich anzeigen, da es aber in der Realen tabelle mehr als 40 Felder pro Tabelle sind ist es sehr umständlich diese explizit anzugeben, ale gibt es da bei JOIN vllt etwas was man angeben kann damit man doppelte Spalten "ausklammern" kann?

MfG :angel:

Kedariodakon 15. Mai 2006 09:52

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben
 
IHMO bleibt dir nichts anders übrig als jede Spalte anzugeben :gruebel:

Aber falls es das doch geben sollte, wär ich auch dankbar für die Information :wink:

Bye

Angel4585 15. Mai 2006 10:25

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben
 
:wall: :wall: :wall:

ich Idiot!!

mein Problem ist ja garnicht das die Spalten ausgegeben werden, sondern das sie überhaupt existieren...

Sorry an alle :oops:

Nochmal, folgende Tabellen:
-----------------
Kunden
-----------------
Spalten:
-----------------
ID
Name
Nachname
AdressID
BearbeitetVon
BearbeitungsDatum
-----------------


-----------------
Adressen
-----------------
Spalten:
-----------------
ID
Strasse
Ort
PLZ
BearbeitetVon
BearbeitungsDatum
-----------------

Wenn ich jetzt dieses SQL-Statement habe:
SQL-Code:
SELECT k.*, a.* FROM Kunden AS k LEFT OUTER JOIN Adressen AS a
ON (k.AdressID = a.ID)
WHERE (BearbeitetVon <> 1)
dann kommt der Fehler wegen der Zweideutigkeit.

Normalerweise würde ich ja ein "k." vor das "BearbeitetVon" setzen, das die WHERE-Klausel allerdings dynamisch in einem extra Modul erzeugt wird, hat dieses keine Ahnung von dem "k.".

Aber jetzt weis ich noch weniger wie ich das machen muss :cry:

Elvis 15. Mai 2006 10:28

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben
 
Schaue dir doch mal einfach die Docs von mySQL an.
Soweit ich weiß haben sie in ihren Online Docs auch eBNF Grammatiken für jede Art von Statement.
Suche da einfach mal nach Table aliases und in den Grammatiken/Bleistiften wirst du sicher sehen können wie die Syntax für Aliase in mySQL ist.

shmia 15. Mai 2006 10:37

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben
 
SQL-Code:
SELECT k.*, a.PLZ, a.Ort, a.Strasse
FROM Kunden AS k LEFT OUTER JOIN Adressen AS a
ON (k.AdressID = a.ID)
WHERE (k.BearbeitetVon <> 1)
Zitat:

Normalerweise würde ich ja ein "k." vor das "BearbeitetVon" setzen, das die WHERE-Klausel allerdings dynamisch in einem extra Modul erzeugt wird, hat dieses keine Ahnung von dem "k.".
Diese Modul muss den Tabellennamen eben mitgeteilt bekommen.

Angel4585 15. Mai 2006 10:42

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben
 
Zitat:

Zitat von shmia
SQL-Code:
SELECT k.*, a.PLZ, a.Ort, a.Strasse
FROM Kunden AS k LEFT OUTER JOIN Adressen AS a
ON (k.AdressID = a.ID)
WHERE (k.BearbeitetVon <> 1)
Zitat:

Normalerweise würde ich ja ein "k." vor das "BearbeitetVon" setzen, das die WHERE-Klausel allerdings dynamisch in einem extra Modul erzeugt wird, hat dieses keine Ahnung von dem "k.".
Diese Modul muss den Tabellennamen eben mitgeteilt bekommen.

Die Idee hat ich auch gerade, ich werds jetzt so machen:

SQL-Code:
SELECT Kunden.*, Adressen.PLZ, Adressen.Ort, Adressen.Strasse
FROM Kunden LEFT OUTER JOIN Adressen
ON (Kunden.AdressID = Adressen.ID)
WHERE (Kunden.BearbeitetVon <> 1)
das funktioniert und den Tabellennamen zu übergeben sollte denke icha uch kein Problem sein.

Hat jemand etwas was gegen diese Version spricht? Ansonsten mach ich das jetzt so :-D


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