Tabellen mit JOIN verknüpfen
baccu
- datenbank
Hallo
Bevor ich hier platz und Zeit in Anspruch nehme, kann mir vieleicht jemand ein gutes Tutorial empfehlen zum Thema:
5 oder Mehr Tabellen mittels JOIN verbinden
Ich bekomme nämlich bei meinen Versuchen immer wieder die Fehlermeldung:
Syntaxfehler (fehlender Operator)in Abfrageausdruck.
hier noch der Quelltext falls jemand einen Lösungsanstz hat.
sql = "SELECT n.Nickname, n.Hotspot, n.Geschlecht, n.GYear, n.Groesse, h.dayFrom,"
+" h.monthFrom, h.yearFrom, h.dayTo, h.monthTo, h.yearTo, h.atHotspot,"
+" d.Nation, d.Augen, d.Gewicht, d.Haarfarbe, d.Beruf"
+" FROM name n"
+" INNER JOIN Holibook h ON n.NickNr = h.NickNr"
+" INNER JOIN Detail d ON n.NickNr = d.NickNr"
+" WHERE n.Hotspot = 'Berlin'"
var rs = db.Execute(sql);
danke
baccu
echo $begrüßung;
Ich bekomme nämlich bei meinen Versuchen immer wieder die Fehlermeldung:
Syntaxfehler (fehlender Operator)in Abfrageausdruck.
Wenn du ein Problem mit der Datenbank hast, ist es wesentlich sinnvoller mit speziell dafür vorgesehenen Programmen [*] zuerst die SQL-Syntax zu testen und dann das getestete Statement in irgendwelche Programme einzubauen.
Woher kommt denn der Fehler? von der Datenbank? Vom Compiler? Hast du vielleicht nur ein Semikolon vergessen?
echo "$verabschiedung $name";
MS SQL-Server: Query Analyzer
Oracle: SQL Plus
MySQL: z.B. phpMyAdmin
...: ...
MySQL: MySQL Query Browser
Hi,
Ich bekomme von der Datenbank folgenden Fehler im Browser angezeigt:
Fehlertyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfehler (fehlender Operator) in Abfrageausdruck 'h.NickNr = n.NickNr LEFT OUTER JOIN Detail d ON d.NickNr = n.NickNr'.
/holidaydate/search.asp, line 662
Zeile 662 ist die Execute Zeile
sql_a = "SELECT n.Nickname, n.Hotspot, n.Geschlecht, n.GYear, n.Groesse, h.dayFrom, h.monthFrom, h.yearFrom, h.dayTo, h.monthTo, h.yearTo, h.atHotspot, d.Nation, d.Augen, d.Gewicht, d.Haarfarbe, d.Beruf FROM name n LEFT OUTER JOIN Holibook h ON h.NickNr = n.NickNr LEFT OUTER JOIN Detail d ON d.NickNr = n.NickNr WHERE n.Hotspot = 'Berlin'";
var ef = db.Execute(sql_a);
und dieser Fehler tritt erst auf wenn ich den 2. JOIN einbaue.
baccu
Hallo baccu
Microsoft JET Database Engine (0x80040E14)
Syntaxfehler (fehlender Operator) in Abfrageausdruck 'h.NickNr = n.NickNr LEFT OUTER JOIN Detail d ON d.NickNr = n.NickNr'.
Teste die Abfrage mit Microsoft Access.
Laut Access-Hilfe gilt für SELECT folgende Syntax in Jet-SQL:
SELECT [Prädikat] { * | Tabelle.* | [Tabelle.]Feld1 [AS Alias1] [, [Tabelle.]Feld2 [AS Alias2] [, ...]]}
FROM Tabellenausdruck [, ...] [IN ExterneDatenbank]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]
Du solltest somit Marians Vorschlag befolgen und das AS nicht weglassen (was Du in anderen SQL-Dialekten kannst).
Freundliche Grüße
Vinzenz
Hi,
+" INNER JOIN Holibook h ON n.NickNr = h.NickNr"
AFAIK müsste es
SELECT * FROM <tabelle>
INNER JOIN <join_tabelle> ON (<join_tabelle>.<spalte> = <tabelle>.<spalte>)
Heißen, wenn ich das richtig sehe gibst du den tabellen ein alias. geh
ich da recht in der annahme? zwischen dem SELECT und FROM müssen auch
die spaltennamen der Joinenden tabellen stehen damit du darauf zugreifen
kannst.
MfG
Hi baccu,
+" INNER JOIN Holibook h ON n.NickNr = h.NickNr"
+" INNER JOIN Detail d ON n.NickNr = d.NickNr"
sicher, dass "Holibook h" und "Detail d" geht?
Auf welcher zeile kommt denn der fehler? beim mysql-monitor (mysql\bin\mysql.exe) wird das angezeigt.
Gruß, Marian