2 Joins in einer Query (MySQL)
Rainer
- datenbank
0 MudGuard
0 Rainer
0 Axel Richter0 Jan Feddersen
Hallo,
@MySQL 5.xx
--folgendes Query steht im PHPScript und funktioniert:
$sql = 'SELECT '.TBL_AUFTRAEGE.'.ID, KundenID, Datum, Wert,
Vorname, Name, Firmenbezeichnung, Strasse, PLZ, Ort, Telefon,
Liefersperre, '.TBL_ADDRESSES.'.Info
FROM '.TBL_AUFTRAEGE.'
JOIN '.TBL_ADDRESSES.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ADDRESSES.'.ID
WHERE ProjektID='.$pid;
--nun möchte ich noch aus einer weiteren Tabelle Name und Vorname des Ansprechpartners einlesen und dachte mir - ok Felder
im Select anhängen, noch ein Join und fertig:
$sql = 'SELECT '.TBL_AUFTRAEGE.'.ID, KundenID, Datum, Wert,
Vorname, Name, Firmenbezeichnung, Strasse, PLZ, Ort, Telefon,
Liefersperre, '.TBL_ADDRESSES.'.Info
,'.TBL_ANSPRECHPARTNER.'.APVorname, '.TBL_ANSPRECHPARTNER.'.APName
FROM '.TBL_AUFTRAEGE.'
JOIN '.TBL_ADDRESSES.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ADDRESSES.'.ID
JOIN '.TBL_ANSPRECHPARTNER.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ANSPRECHPARTNER.'.KundenID
WHERE ProjektID='.$pid;
--Denkste, geht nicht..
Fehlermeldung:
"Column 'KundenID' in field list is ambiguous" - wieso mehrdeutig? Finde den Haken nicht.
Kann mir das jemand erklären.
Gruß Rainer
Hi,
"Column 'KundenID' in field list is ambiguous" - wieso mehrdeutig? Finde den Haken nicht.
Kann mir das jemand erklären.
$sql = 'SELECT '.TBL_AUFTRAEGE.'.ID, KundenID, Datum, Wert,
...
TBL_AUFTRAEGE.'.KundenID
TBL_ANSPRECHPARTNER.'.KundenID
Seltsam. Bei ID weißt Du, wie Du Mehrdeutigkeit auflösen kannst, bei KundenID aber nicht ...
cu,
Andreas
Hallo Andreas,
leider weiss ich es überhaupt nicht. Die Query steht so im Script. Habe die Stelle gefunden wo ich etwas erweitern muss (?) um das Ergebnis zu erweitern.
Kannst du mir sagen wie es richtig geschrieben sein muss?
Ist das von Axel richtig?
Rainer
Hallo,
Kannst du mir sagen wie es richtig geschrieben sein muss?
Ist das von Axel richtig?
ja, ist es. Siehe dazu zum Beispiel http://aktuell.de.selfhtml.org/artikel/datenbanken/fortgeschrittene-joins/selfjoin.htm.
Weiter solltest Du Zahlen, die aus Variablen stammen, in zusammengebauten SQL-Statements besondere Aufmerksamkeit schenken, siehe dedlfix Ausführungen in der Preview-Version seines Artikels, der Abschnitt mit der Überschrift "Zahlen im (My)SQL-Statement".
Freundliche Grüße
Vinzenz
Hallo,
--folgendes Query steht im PHPScript und funktioniert:
Bitte gib demnächst bei SQL-Fragen den Query, also den _Inhalt_ von $sql an und _nicht_ den PHP-Code.
--nun möchte ich noch aus einer weiteren Tabelle Name und Vorname des Ansprechpartners einlesen und dachte mir - ok Felder
im Select anhängen, noch ein Join und fertig:
$sql = 'SELECT '.TBL_AUFTRAEGE.'.ID, KundenID, Datum, Wert,
Vorname, Name, Firmenbezeichnung, Strasse, PLZ, Ort, Telefon,
Liefersperre, '.TBL_ADDRESSES.'.Info,'.TBL_ANSPRECHPARTNER.'.APVorname, '.TBL_ANSPRECHPARTNER.'.APName
FROM '.TBL_AUFTRAEGE.'
JOIN '.TBL_ADDRESSES.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ADDRESSES.'.IDJOIN '.TBL_ANSPRECHPARTNER.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ANSPRECHPARTNER.'.KundenID
WHERE ProjektID='.$pid;
Hm. Sind TBL_AUFTRAEGE, TBL_ADDRESSES, TBL_ANSPRECHPARTNER Konstanten?
SELECT TBL_AUFTRAEGE.ID, KundenID, Datum, Wert,
Vorname, Name, Firmenbezeichnung, Strasse, PLZ, Ort, Telefon,
Liefersperre, TBL_ADDRESSES.Info, TBL_ANSPRECHPARTNER.APVorname, TBL_ANSPRECHPARTNER.APName
FROM TBL_AUFTRAEGE.
INNER JOIN TBL_ADDRESSES ON TBL_AUFTRAEGE.KundenID=TBL_ADDRESSES.ID
INNER JOIN TBL_ANSPRECHPARTNER ON TBL_AUFTRAEGE.KundenID=TBL_ANSPRECHPARTNER.KundenID
WHERE ProjektID=1;
Das Feld KundenID kommt sowohl in der Tabelle TBL_AUFTRAEGE also auch in der Tabelle TBL_ANSPRECHPARTNER vor. Welche KundenID soll das SELECT also abfragen?
viele Grüße
Axel
Hallo Rainer dein SQL ist ja FAST richtig
$sql = 'SELECT '.TBL_AUFTRAEGE.'.ID, KundenID, Datum, Wert,
Vorname, Name, Firmenbezeichnung, Strasse, PLZ, Ort, Telefon,
Liefersperre, '.TBL_ADDRESSES.'.Info
,'.TBL_ANSPRECHPARTNER.'.APVorname, '.TBL_ANSPRECHPARTNER.'.APName
FROM '.TBL_AUFTRAEGE.'
JOIN '.TBL_ADDRESSES.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ADDRESSES.'.ID
JOIN '.TBL_ANSPRECHPARTNER.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ANSPRECHPARTNER.'.KundenID
WHERE ProjektID='.$pid;
dein zusatz von TBL_AUFTRAEGE.'.KundenID='.TBL_ANSPRECHPARTNER.'.KundenID ist ja ganz nett nur solltest du im select ihm auch sagen "Welche" KundenID
$sql = 'SELECT '.TBL_AUFTRAEGE.'.ID, '.TBL_ANSPRECHPARTNER.'.KundenID, Datum, Wert,
Vorname, Name, Firmenbezeichnung, Strasse, PLZ, Ort, Telefon,
Liefersperre, '.TBL_ADDRESSES.'.Info
,'.TBL_ANSPRECHPARTNER.'.APVorname, '.TBL_ANSPRECHPARTNER.'.APName
FROM '.TBL_AUFTRAEGE.'
JOIN '.TBL_ADDRESSES.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ADDRESSES.'.ID
JOIN '.TBL_ANSPRECHPARTNER.' ON '.TBL_AUFTRAEGE.'.KundenID='.TBL_ANSPRECHPARTNER.'.KundenID
WHERE ProjektID='.$pid;
Ich hoffe mal so kommts hin, kann ich nicht testen da ich weder DB noch php code dazu hab.die im SELECT stehenden felder würde ich alle prefixen mit tabellen namen .. so btw.
Gruß Jan
--------------
IT & PR - zinsnavigator.de
janfeddersen _at_ dunkelnetz _dot_ de
Kredit Umschulden ? Wir helfen !