Zum Inhalt springen

Bug bei $queryresult->count() mit "WHERE NOT EXISTS" statement?

Erstellt am 1. Dezember 2011 · Noch keine Antworten

Tags: Frage

sundawn ·

Hallo,

es scheint bei querys die ein "where not exists" enthalten einen Fehler zu geben.

$query = $this->createQuery();
			$statement = "SELECT question.* FROM ...
				WHERE question.deleted = 0
				AND NOT EXISTS(
					select a.uid FROM ...
				)";
			
			$query->statement($statement);
			$queryresult = $query->execute();
		        
                        //falsche Anzahl	
		        //return $queryresult->count();

                        //korrekte Anzahl
			return count($queryresult->toArray());

In meinem Fall ergibt die Query oben ohne das NOT EXISTS immer 18 also die Gesamtzahl der Fragen.
Das NOT EXISTS entfernt die Ergebnisse auf welche es schon eine Antwort gibt.

$queryresult->count() liefert immer 18 - habe das Statement per echo ausgeben lassen und im phpmyadmin getestet -> leeres result (da in meinem Fall alle Fragen schon beantwortet waren).

count($queryresult->toArray()) hingegen liefert bei identischem statement korrekt 0 bzw dann auch in anderen Fällen die erwartete Zahl.

Ich weiß nicht ob der Fehler schon im QueryResult liegt oder die ->count() Methode falsch arbeitet, in jedem Fall ist das Verhalten so nicht korrekt.