AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL bei JOIN gemeinsame Spalten nicht ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

SQL bei JOIN gemeinsame Spalten nicht ausgeben

Ein Thema von Angel4585 · begonnen am 15. Mai 2006 · letzter Beitrag vom 15. Mai 2006
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

SQL bei JOIN gemeinsame Spalten nicht ausgeben

  Alt 15. Mai 2006, 10:47
Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS
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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben

  Alt 15. Mai 2006, 10:52
IHMO bleibt dir nichts anders übrig als jede Spalte anzugeben

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

Bye
Christian
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben

  Alt 15. Mai 2006, 11:25


ich Idiot!!

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

Sorry an alle

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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben

  Alt 15. Mai 2006, 11:28
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.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben

  Alt 15. Mai 2006, 11:37
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.
Andreas
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: SQL bei JOIN gemeinsame Spalten nicht ausgeben

  Alt 15. Mai 2006, 11:42
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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:44 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