joschilein
Multitalent
- 5 Mai 2006
- 1.393
- 151
In einer recht komplizierten Abfrage kommt folgender Teil vor:
Das wird mir aber folgender Fehler ausgeworfen:
Die Spalte ist aber definitiv vorhanden. Also habe ich mir gedacht, dass wohl name nicht aus dem Subquery rauskommt, da in dem Fall zwar immer nur ein Wert ausgelesen wird (speziell wegen dem Limit), aber ein Wert ist für die Datenbank wohl was anderes als eine Ergebnis mit einer Spalte und einer Zeile - schließlich ist ja die Zahl 5 auch nicht gleich der Matrix M((5)).
Mit folgender Version klappt dann alles:
Nur wird ja dann der name ja dann unnötigerweise doppelt ausgelesen. Diese Zeile ist in der Abfrage mehrfach vorhanden (es werden dann jeweils andere Werte ausgelesen) und die ganze Abfrage befindet sich dann auf PHP Ebene in einer durchaus dutzendfachen Wiederholung, also könnte sich so ein Zeitverlust unnötigerweise merklich aufschaukeln..
Irgendwelche Lösungen, um den ausgelesenen Wert für "else" zwischenzuspeichern? Oder um innerhalb der if Abfrage als automatisches else den Wert des Vergleiches zu nehmen? Für letzteres Problem habe ich mir in Excel mal eine alternative wenn() Funktion gebastelt, weil ich da die doppelten Sachen nicht mehr haben wollte.
Code:
if((SELECT name FROM t1 WHERE id=1 LIMIT 1) = NULL, 0, name)
Das wird mir aber folgender Fehler ausgeworfen:
Code:
Unknown column 'name' in 'field list'
Die Spalte ist aber definitiv vorhanden. Also habe ich mir gedacht, dass wohl name nicht aus dem Subquery rauskommt, da in dem Fall zwar immer nur ein Wert ausgelesen wird (speziell wegen dem Limit), aber ein Wert ist für die Datenbank wohl was anderes als eine Ergebnis mit einer Spalte und einer Zeile - schließlich ist ja die Zahl 5 auch nicht gleich der Matrix M((5)).
Mit folgender Version klappt dann alles:
Code:
if((SELECT name FROM t1 WHERE id=1 LIMIT 1) = NULL, 0, (SELECT name FROM t1 WHERE id=1 LIMIT 1))
Nur wird ja dann der name ja dann unnötigerweise doppelt ausgelesen. Diese Zeile ist in der Abfrage mehrfach vorhanden (es werden dann jeweils andere Werte ausgelesen) und die ganze Abfrage befindet sich dann auf PHP Ebene in einer durchaus dutzendfachen Wiederholung, also könnte sich so ein Zeitverlust unnötigerweise merklich aufschaukeln..
Irgendwelche Lösungen, um den ausgelesenen Wert für "else" zwischenzuspeichern? Oder um innerhalb der if Abfrage als automatisches else den Wert des Vergleiches zu nehmen? Für letzteres Problem habe ich mir in Excel mal eine alternative wenn() Funktion gebastelt, weil ich da die doppelten Sachen nicht mehr haben wollte.