![]() |
Datenbank: MySQL • Zugriff über: PHP-MySQL-Extension
[MySQL] Tabellenspalte nicht gefunden
Morgen.
Ich hab grad folgendes Problem mit dieser Abfrage:
SQL-Code:
Diese Abfrage funktioniert auf meinem lokalen MySQL-Server prima. Der MySQL-Server von Pytal aber meldet "#1054 - Unknown column 'u.userid' in 'on clause'". Die Tabellenstruktur ist auf beiden Servern gleich, die MySQL-Version des lokalen Servers ist 4.1.14, die des Pytal-Servers 5.0.32. Hat sich die Syntax denn so grundlegend verändert, dass man nicht mal mehr einen einfachen LEFT JOIN so machen kann wie in der Version 4?
SELECT u.*, IFNULL(v.value, o.default) AS showemail FROM ni_users u, ni_useroptions o LEFT JOIN ni_useroptionvalues v ON (v.optionid=o.optionid AND v.userid=u.userid) WHERE o.name='showemail' LIMIT 0,50
|
Re: [MySQL] Tabellenspalte nicht gefunden
Nimm mal das Feld explizit in die Feldliste auf.
|
Re: [MySQL] Tabellenspalte nicht gefunden
Gleiches Ergebnis. In der Feldliste nimmt MySQL es an, aber in der ON-Clause findet es die Spalte nicht.
|
Re: [MySQL] Tabellenspalte nicht gefunden
Hallo Manuel,
entzerre mal die Joins - du verwurschtelst da u, v und o in einer ON-Klausel. MySQL 5 ist da wesentlich strikter, was die Bewertung von SQL-Syntax angeht. Grüße vom marabu |
Re: [MySQL] Tabellenspalte nicht gefunden
Und wie soll ich das machen?
|
Re: [MySQL] Tabellenspalte nicht gefunden
So vielleicht:
SQL-Code:
SELECT u.*, IFNULL(v.value, o.default) AS showemail FROM ni_users u
LEFT JOIN ni_useroptionvalues v ON v.userid=u.userid LEFT JOIN ni_useroptions o ON v.optionid=o.optionid WHERE o.name='showemail' LIMIT 0,50 |
Re: [MySQL] Tabellenspalte nicht gefunden
Ah ja, klingt gut... Funktioniert aber nicht ganz: Datensätze, bei für die es keine Zeile in ni_useroptionvalues gibt, sollen nämlich auch ausgegeben werden, und zwar mit dem Wert o.default.
SQL-Code:
So hab ichs noch probiert, bringt aber keine Änderung.
SELECT u.*, IFNULL(v.value, o.default) AS showemail FROM ni_users u
LEFT JOIN ni_useroptionvalues v ON (v.userid=u.userid OR v.userid IS NULL) LEFT JOIN ni_useroptions o ON v.optionid=o.optionid WHERE o.name='showemail' LIMIT 0,50 EDIT: Logisch, dass das nicht geht. So aber:
SQL-Code:
SELECT u.*, IFNULL(v.value, o.default) AS showemail FROM ni_users u
LEFT JOIN ni_useroptionvalues v ON (v.userid=u.userid) LEFT JOIN ni_useroptions o ON (v.optionid=o.optionid OR v.optionid IS NULL) WHERE o.name='showemail' LIMIT 0,50 |
Re: [MySQL] Tabellenspalte nicht gefunden
Na, dann war ich aber nahe dran :lol:
|
Re: [MySQL] Tabellenspalte nicht gefunden
Statt der Abfrage auf OR IS NULL kann man auch einen OUTER JOIN verwenden ...
|
Re: [MySQL] Tabellenspalte nicht gefunden
Ich dachte immer, ein LEFT JOIN ist automatisch ein OUTER JOIN :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 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 by Thomas Breitkreuz