Joins & Count ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Joins & Count ?

    Hi,

    ich hätte ein Problem bei folgendem Codefragment (und werde langsam wahnsinnig).

    PHP-Code:
    $result = &$this->retrieveRange(
                
    'SELECT DISTINCT u.*,se.title as title, a.review_id as review_id, count(a.reviewer_id) as uc
                ,a.date_completed as datec
                FROM users u 
                NATURAL JOIN roles r 
                LEFT JOIN review_assignments a ON (a.reviewer_id = u.user_id AND a.cancelled = 0 AND a.article_id = ? AND a.round = ?) 
                LEFT JOIN user_sections s ON  s.user_id = u.user_id
                LEFT JOIN sections se ON  se.section_id = s.section_id
                
                WHERE u.user_id = r.user_id AND r.journal_id = ? AND r.role_id = ? ' 
    $searchSql 
                GROUP BY u.user_id
                ORDER BY uc DESC, datec DESC'
    ,
                
    $paramArray$rangeInfo
            
    ); 
    Ich hoffe man steigt da durch ?
    Das wichtigste für mich wäre eine Sortierung nach der Anzahl der Einträge in a.reviewer_id (mittels COUNT derzeit), leider scheint der das gar nicht auszuwerten. Im Ganzen betrachtet scheint er nur die Werte aus user zu interpretieren bei der Sortierung.

    Ich hoffe mir kann da jemand helfen, bin für jeden Strohhalm dankbar.

    Danke schon mal im voraus,
    Alexander

  • #2
    kein Wunder, in der order by-Klausel ist auch nur die Rede von u.user_id, nirgends ein Count zu sehen

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Danke erstmal für die schnelle Hilfe,

      aber bin mir nicht sicher ob ich dir folgen kann ?

      u.user_id in der ORDER Klausel ? Oder meintest du in GROUP BY ?

      Ich hatte count bisher nie verwendet (und daher wohl wenig Ahnung), müsste es nicht ausreichen COUNT im SELECT-Statement zu verwenden um das dann im ORDER BY zu benutzen ?

      Daher auch das count(a.reviewer_id) as uc im SELECT und das uc DESC im ORDER BY .

      Klang da noch logisch.

      Kommentar


      • #4
        Achso ... sry hab die Klauseln verwechselt~

        Versuch mal ORDER BY count(a.reviewer_id) statt ORDER BY uc

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Aber das GROUP BY ist glaub ich trotzdem falsch gesetzt, das müsste
          GROUP BY a.reviewer_id
          lauten ... wenn ich das gerade richtig blick oO

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Hmm,

            da schmeisst er mir fieserweise bei beiden "DB Error: Invalid use of group function" aus.

            Ich hatte mal testweise eine zusätzliche Tabelle eingefügt in die ich direkt die Werte (die sonst count berechnen sollte) eingetragen habe, damit funktionierts natürlich super. Also hakelt das definitiv am count

            Kommentar


            • #7
              Der Fehler kommt wenn du das GROUP-BY ersetzt? Oo

              Poste mal einen Test-Dump der Tabelle, damit wir das mal selbst ausprobieren können~
              (möglichst mit Test-Daten wo es nicht funktioniert und mit dem gewünschten Resultat, sodass man darauf hin arbeiten kann)

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar

              Lädt...
              X