Query liefert kein Ergebnis, trotz vorherigem count

Naquadah

Benutzer
Beiträge
10
Ich arbeite derzeit an einer Art Blog und ich habe auch so ziemlich fast alles fertig, allerdings habe ich grade bei dem Archiv ein Problem. In dem Archiv soll man dann natürlich auch suchen können und das so ziemlich nach allem möglichen aber irgendwie komme ich jetzt seit einiger Zeit einfach nicht weiter.

Ich zähle vorher auch immer die Anzahl der Beiträge mit einem Select COUNT(*) und das komische ist dabei jetzt gerade, dass ich bei dem Count bei einer Suche eine Anzahl von 1 kriege aber der fast gleiche Befehl, bloß natürlich ohne count liefert kein Ergebnis.

So sieht der Select count Befehl aus:
Code:
SELECT COUNT(*) FROM entry e
LEFT JOIN comment c ON c.entry_id = e.id AND c.active = 1
LEFT JOIN category cat ON e.category_id = cat.id
WHERE YEAR(creation_date) = :year AND e.id = :search
GROUP BY e.id

Diese Query liefert dann, wie gesagt eine 1, wenn ich bspw. nach einem spezifischen Beitrag mit der ID 76 suche. Diese "konkrete" Query hier, die den Beitrag (oder auch Beiträge ;) ) dann aber holen soll, liefert kein Ergebnis zurück.

Code:
SELECT e.id, e.title, e.content, e.creation_date, e.creation_time, cat.name AS catName, COUNT(c.id) AS numCom
FROM entry e
LEFT JOIN comment c ON c.entry_id = e.id AND c.active = 1
LEFT JOIN category cat ON e.category_id = cat.id
WHERE YEAR(creation_date) = :year AND e.id = :search
GROUP BY e.id ORDER BY e.creation_date ASC, e.creation_time ASC LIMIT :start, 10

Ich finde den Fehler aber einfach nicht, kann mir dabei vielleicht jemand helfen? Ich suche jetzt schon seit einiger Zeit und normal gebe ich nicht so schnell auf aber für den Fehler bin ich wohl leider blind.

Die Paramter sind auch alle definitiv belegt, dass habe ich auch schon geprüft. Ich arbeite mit PHP & MySQL und das habe ich schon als mögliche Fehlerquelle ausgeschlossen.
 
Zuletzt bearbeitet:
Werbung:
Ich finde den Fehler aber einfach nicht, kann mir dabei vielleicht jemand helfen?

Ich sollte anfangen, eine Strichliste für die Opfer der vielen MySQL-Bugs zu führen. Hier ist es folgender: wenn Du in einer Abfrage aggregierst, müssen alle Spalten des Ergebnisses entweder aggregiert oder gruppiert sein. Prüfen wir doch mal:

Code:
SELECT e.id, e.title, e.content, e.creation_date, e.creation_time, cat.name AS catName, COUNT(c.id) AS numCom
...
GROUP BY e.id ORDER BY ..

Nehme die ganz aktuellste MySQL-Version, die hat ist nun nicht mehr blind für diesen Fehler. Frühere Versionen erkennen NICHT den Fehler, liefern stattdessen ein falsches Resultat. Also, entweder aktuellste MySQL-Version oder, besser, gleich eine bessere Datenbank wie z.B. PostgreSQL. Dann hättest Du weitere Vorteile wie z.B. Window-Funktionen, mehr/bessere Indexe, parallele Ausführung und so weiter ...
 
Zurück
Oben