2016-08-29 7 views
1

Ich habe diesen Code:Wird COUNT() zweimal ausgeführt?

"SELECT post_id, COUNT(post_id) AS number_of_votes, (SUM(vote)/COUNT(post_id)) AS result 
              FROM " . LOG_TABLE . " , $wpdb->posts AS p 
              WHERE post_id = p.ID 
              AND p.post_status = 'publish' 
              GROUP BY post_id 
              HAVING COUNT(post_id) >= 2 
              ORDER BY result DESC, COUNT(post_id) DESC 
              LIMIT 10 
              " 

Ich möchte, wenn der COUNT in der ersten Reihe zweimal laufen verwendet wissen?

EDIT: für Lauf zweimal meine ich, wenn er den Tisch acces zweimal

Mit besten Grüßen, Dario

+0

Können Sie nicht selbst überprüfen? – LBes

+0

@LBes wie würdest du das testen? – Strawberry

Antwort

2

, wenn Sie Unterabfragen der unten stehende Formular verwenden, wird Tabelle nur einmal zugegriffen werden (wenn es das, was Sie von Graf gemeint ist, wird zweimal zugegriffen werden), so dass nur einmal berechnet werden angerechnet werden und überall

select id,(select min(id) from table1 t2 where t1.id=t2.id)b 
from 
table1 t1 
verwendet
+0

Das ist falsch! Warum wurde diese Antwort genehmigt? 'COUNT' wird zweimal berechnet, einmal für jedes Mal, wenn es benutzt wird! – sagi

+1

@sagi: Was Sie sagen, ist richtig, ich denke, der Benutzer meinte, wenn es zweimal aus der Tabelle zugegriffen wird. Das ist, was ich in meiner Antwort erwähnt habe – TheGameiswar

1

Ja, die beiden COUNT() wird zweimal laufen, aber das bedeutet nicht, die Zeile sein muss zweimal verarbeitet. Für jede Zeile der Daten setzt der Optimierer zwei Zähler und eine Summierung, die bei Verwendung von 1 oder 2 Zählern keinen wesentlichen Unterschied machen sollten.

1

Ja, zählen läuft zweimal in der Tat.Hier passiert was genau passiert. Dieser Teil des Codes COUNT(post_id) AS number_of_votes zählt die Gesamtzahl der Post-IDs und dieser Teil des Codes (SUM(vote)/COUNT(post_id)) summiert sich mit den Stimmen, die weiter durch die Gesamtzahl der Post-IDs geteilt wird. So ja, die Anzahl läuft zweimal, aber die Zeile wird nicht verarbeitet mehrmals.

Verwandte Themen