Announcement

Collapse
No announcement yet.

Merkwürdige Doctrine groupBy Interpretation

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Merkwürdige Doctrine groupBy Interpretation

    Hallo,

    ich habe ein merkwürdiges Problem mit Doctrine.
    Und zwar habe ich eine Tabelle namens "Bestellungen" in der folgende Felder sind: id, bestellungsId und userId
    Um jetzt herauszufinden welche Bestellung am häufigsten aufgegeben wurde, nutze ich folgende SQL:
    Code:
    SELECT COUNT(userId) AS beliebtheit FROM bestellungen GROUP BY bestellungsId ORDER BY beliebtheit DESC
    Nutze ich diese SQL in PHPMyAdmin funktioniert alles wunderbar und ich bekomme genau die Ergebnisse, die ich erwartet habe.
    Wenn ich das ganze nun allerdings unter Doctrine anwende, sieht es A) so bei mir aus:
    PHP Code:
    $em Zend_Registry::get('entityManager');

    $qb $em->createQueryBuilder();
    $qb->select(array(
            
    'COUNT(b.userId) AS beliebtheit'
        
    ))
        ->
    from('Entity\Bestellungen''b')
        ->
    groupBy('b.bestellungsId')
        ->
    orderBy('beliebtheit''DESC')

    und B) kriege ich ein komplett anderes Ergebnis, als mit der SQL von oben.
    Ich denke allerdings die SQL quasi 1zu1 umgesetzt zu haben, das Problem ist aber, dass COUNT() in diesem Fall die ausgegebenen Datensätze zählt und ich somit immer nur eine "1" erhalte.

    Wäre super wenn mir dabei vielleicht der ein oder andere helfen könnte.

  • #2
    Schau Dir doch mal das gesendete SQL Statement an. Ansonsten könnte ich evtl. noch auf falsche Connection tippen (dass Du vielleicht in einer anderen Instanz der DB landest, falls Du irgendwo eine zweite hast).
    Es könnte vielleicht auch sein dass er die vorkommen der UserId innerhalb der bereits berechneten "Count-Tabelle" zählt. Ich würde dringend das generierte SQL statement anschauen.

    Comment


    • #3
      Originally posted by fanderlf View Post
      Es könnte vielleicht auch sein dass er die vorkommen der UserId innerhalb der bereits berechneten "Count-Tabelle" zählt. Ich würde dringend das generierte SQL statement anschauen.
      Genau das denke ich auch, bzw. sieht der Output auch genau danach aus ... die Frage ist .. warum?
      Also $qb->getDql(); liefert mir folgendes:
      SELECT COUNT(b.userID) AS beliebtheit FROM Entity\Bestellungen b GROUP BY b.bestellungsId ORDER BY beliebtheit DESC
      Laut meinen analytischen Fähigkeiten müsste bei der SQL alles korrekt sein.
      Trotzdem gibt er mir bei COUNT() immer nur die Anzahl der einzelnen Datensätze zurück, was sich in jedem Fall auf 1 beläuft.

      Comment


      • #4
        Hallo,
        Originally posted by Notenshi View Post
        SELECT COUNT(b.userID) AS beliebtheit FROM Entity\Bestellungen b GROUP BY b.bestellungsId ORDER BY beliebtheit DESC
        Das kann unmöglich der SQL-Code sein, der an den MySQL-Server geschickt wird. "Entity\Bestellungen" ist kein gültiger Ausdruck für die FROM-Klausel. Der Code wird also durch die Zwischenschicht entweder nochmal verändert, oder der Server liefert einen Fehler, der dann in der weiteren Verarbeitung einfach als 1 interpretiert wird. Was passiert denn, wenn du dieses "Entity\" mal weglässt?

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X