abfrage aus 2 tabellen
juergen
- datenbank
0 Vinzenz Mai0 Hamstar0 Jürgen0 Vinzenz Mai0 Jürgen0 Hamstar0 Vinzenz Mai0 Hamstar
0 jürgen0 Hamstar0 Vinzenz Mai
hallo ich habe 2 sql abfragen die auch einzeln funktionieren:
1)SELECT total, einzeln, datum FROM termine WHERE ID_Geraete = '$ID' ORDER BY datum
2)SELECT Standort, ID_Golfclub, Datum FROM Verlauf WHERE ID_Geraete = '$ID' ORDER BY datum
nun will ich aber das die beiden Ergenisse in einer ausgabe nach dem datum sortiert angezeigt werden.
bei dieser sql abfrage:
3)SELECT total, einzeln, datum, Standort, ID_Golfclub, Datum FROM termine , Verlauf WHERE ID_Geraete = '$ID' ORDER BY datum
kommt folgende fehlermeldung:
#1052 - Column 'datum' in field list is ambiguous
Ich habe bisher noch nie mit abfragen aus/über 2 tabellen gearbeitet.
Wo liegt der fehler? danke für tipps
Jürgen
Hallo
3)SELECT total, einzeln, datum, Standort, ID_Golfclub, Datum FROM termine , Verlauf WHERE ID_Geraete = '$ID' ORDER BY datum
SELECT
total,
einzeln,
datum,
Standort,
ID_Golfclub,
Datum
FROM termine t -- Tabellenalias für faule Schreiber
INNER JOIN Verlauf v -- explizite Join-Syntax
ON t.ID_Geraete = v.ID_Geraete -- die Aliasnamen im Einsatz,
-- sie sagen der Datenbank, aus welcher Tabelle
-- die Felder stammen
ORDER BY Datum
kommt folgende fehlermeldung:
#1052 - Column 'datum' in field list is ambiguous
Mit der Schreibweise Tabellenname.Spaltenname löst Du diesen Zwiespalt auf, in dem das Datenbankmanagementsystem steckt.
Ich habe bisher noch nie mit abfragen aus/über 2 tabellen gearbeitet.
Lesetipp: Rouven Thimms "Einführung Joins".
Kommst Du an drei Tabellen, dann hat SELFHTML aktuell auch einen Artikel dafür: Fortgeschrittene Jointechniken.
Freundliche Grüße
Vinzenz
kommt folgende fehlermeldung:
#1052 - Column 'datum' in field list is ambiguousMit der Schreibweise Tabellenname.Spaltenname löst Du diesen Zwiespalt auf, in dem das Datenbankmanagementsystem steckt.
Nebend er von Vinnie genannten Syntax "für faule Schreiber" empfiehlt der Hamster die Nutzung datenbankweit eindeutiger Datenfeldnamen, und zwar über Prasefices, z.B.:
Tabellenname:
Tiere
Datenfelder:
Tiere_ID
Tiere_Name
Tiere_Geburtsdatum
Tiere_Rasse
Auch da gleich ein interessanter Aspekt, manche meinen, dass es doch Tier_ID, Tier_Name etc. heissen müsste. Der Hamster hält das 1.) für nicht folgerichtig und 2.) für problematisch, bspw. bei Tabellennamen wie User oder Benutzer (yo, der Hamster weiss, hardliner kommen da mit Users und Benutzers - LOL).
Ein weites Feld.
Hallo,
leider kommt ne neue fehlermeldung:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM termine INNER JOIN Verlauf ON termine . ID_Geraete = Verlauf . ID_Geraete' at line 1
bei deinem sql:
SELECT
total,
einzeln,
datum,
Standort,
ID_Golfclub,
FROM termine
INNER JOIN Verlauf
ON termine.ID_Geraete = Verlauf.ID_Geraete
ORDER BY datum
Bin gerade beim artikel durchlesen aber falls du mir weiterhelfen kannst.
mfg juergen
Hallo Jürgen
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM termine INNER JOIN Verlauf ON termine . ID_Geraete = Verlauf . ID_Geraete' at line 1
bei deinem sql:
Nein, dieser Fehler ist in meinem SQL nicht enthalten, der stammt von Dir :-)
SELECT
total,
einzeln,
datum,
Standort,
ID_Golfclub,
FROM termine
INNER JOIN Verlauf
ON termine.ID_Geraete = Verlauf.ID_Geraete
termine . ID_Geraete = Verlauf . ID_Geraete
Fatale Leerzeichen!
Ich schrieb nicht umsonst
Mit der Schreibweise Tabellenname.Spaltenname löst Du diesen Zwiespalt auf, in dem das Datenbankmanagementsystem steckt.
Freundliche Grüße
Vinzenz
Hallo vincenz
termine . ID_Geraete = Verlauf . ID_Geraete
Fatale Leerzeichen!
erstmal danke, aber so mit leerzeichen kommt leider noch die gleiche fehlermeldung?
Danke juergen
termine . ID_Geraete = Verlauf . ID_Geraete
Fatale Leerzeichen!
erstmal danke, aber so mit leerzeichen kommt leider noch die gleiche fehlermeldung?
Da war Vinnie auf dem falschen Dampfer, Du hast irgendwo ein Komma zuviel.
Hallo Hamstar,
Da war Vinnie auf dem falschen Dampfer, Du hast irgendwo ein Komma zuviel.
stimmt. Aber nicht in meinem Code :-)
Das ist das Risiko beim Löschen der letzten Spalte, dennoch finde ich die Schreibweise, die Kalle hier einmal vorgestellt hat (Komma zu Beginn einer Zeile), einfach nur häßlich.
Freundliche Grüße
Vinzenz
Das ist das Risiko beim Löschen der letzten Spalte, dennoch finde ich die Schreibweise, die Kalle hier einmal vorgestellt hat (Komma zu Beginn einer Zeile), einfach nur häßlich.
Sowas:
"
SELECT
total,
einzeln,
datum,
Standort,
ID_Golfclub,
FROM termine
INNER JOIN Verlauf
ON termine.ID_Geraete = Verlauf.ID_Geraete
"
sollte aber auch durch sowas:
"
SELECT
total,
einzeln,
datum,
Standort,
ID_Golfclub
FROM
termine
INNER JOIN
Verlauf ON (Verlauf.ID_Geraete = termine.ID_Geraete)
"
ersetzt werden. ;)
Überl auch die wechselnde Gross- und Kleinschreibung. Die verwendeten Namen lasse ich mal unkommentiert.
hallo danke kommafehler gefunden,aber leider problem nicht gelöst
SELECT total, einzeln, datum, Standort, ID_Golfclub
FROM termine
INNER JOIN verlauf ON termine.ID_Geraete = verlauf.ID_Geraete
ORDER BY datum
fehlermeldung jetzt wieder
1052 - Column 'datum' in field list is ambiguous
??
habe mittlerweile beide Feldnamen datum klein geschrieben und frage deshalb nur noch einmal nach datum.
danke für eure hilfe
juergen
1052 - Column 'datum' in field list is ambiguous
Einfach mal alle Datenfeldnamen in der Schreibweise <Datentabellenname>.<Datenfeldname> angeben.
Hallo
SELECT total, einzeln, datum, Standort, ID_Golfclub
FROM termine
INNER JOIN verlauf ON termine.ID_Geraete = verlauf.ID_Geraete
ORDER BY datum
fehlermeldung jetzt wieder1052 - Column 'datum' in field list is ambiguous
Klar, die Spalte "datum" kommt in beiden Tabellen vor. Du musst daher der Datenbank sagen, welche Spalte "datum" Du gerne hättest, die aus der Tabelle termine oder aus der Tabelle verlauf. Dazu gibt es die Schreibweise
tabellenname.spaltenname
von mir bereits zweimal erwähnt. Auch in der ORDER-BY-Klausel musst Du die Spalte so spezifizieren. Da es auf Dauer lästig wird, stets voll ausgeschriebene Tabellennamen hinzuschreiben, sind in solchen Fällen kurze und dennoch leicht verständliche Aliasnamen hilfreich.
Freundliche Grüße
Vinzenz