Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Query liefert kein Ergebnis, trotz vorherigem count

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Naquadah, 16 Januar 2017.

  1. Naquadah

    Naquadah Benutzer

    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: 16 Januar 2017
  2. akretschmer

    akretschmer Datenbank-Guru

    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 ...
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden