2016-06-29 18 views
0

Ich versuche eine Möglichkeit zu finden, einige Zeilen in meiner Datenbank auszuwählen und zu zählen. Ich war die MySQL-Dokumentation überprüft und das ist, was ich kam mit:Zeilen in derselben Abfrage auswählen und zählen?

$query = "SELECT *, COUNT(*) as total WHERE IMAGE != '' AND CATEGORY = '$category' $limit"; 

Aber das gibt eine einzelne Zeile, wenn Sie fertig ... :(

als ich versucht habe:

$query = "SELECT * FROM PRODUCTS, 
     (SELECT COUNT(*) as total FROM PRODUCTS WHERE IMAGE != '' AND CATEGORY = '$category') as x 
     WHERE IMAGE != '' AND CATEGORY = '$category' $limit"; 

Das funktioniert, aber ich weiß nicht wirklich, ob das gut funktioniert, wegen der zwei SELECT-Anweisungen (lus brauche ich nicht als x, aber ohne diese schlägt die Abfrage fehl).

Gibt es a besserer Weg? Dank

+0

Können Sie einige Beispieldaten liefern und die erwarteten Ergebnisse aus der Abfrage? – mba12

+1

Es wäre besser, wenn der Code für SQL Injection nicht anfällig wäre. – spencer7593

+1

Ich glaube, Sie suchen [SQL_CALC_FOUND_ROWS] (http://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_found-rows), siehe z.B. [Diese Frage] (http://stackoverflow.com/questions/12887266/get-total-number-of-rows-when-using-limit) – Solarflare

Antwort

0

Ein anderer Weg sub-query aber nicht sicher über die Leistung unter Verwendung sollte nur einmal ausgeführt werden, da es keine Korrelation von äußeren Tabelle ist

SELECT *, (select COUNT(*) from PRODUCTS) as total 
WHERE IMAGE != '' 
AND CATEGORY = '$category' $limit 
+0

danke, aber Ihre Abfrage gibt unglücklicherweise NULL. :( –

Verwandte Themen