2012-03-25 6 views
0

Wie kehre ich die Anzahl der Zeilen von dieser Abfrage anstelle von Abfrageergebnissen zurückgegeben:COUNT Reihen von SQL-Abfrage SELECT bestimmte Zeilen beteiligt + FROM + WO + UND

SELECT collections.name, collections.description, collections.collection_id, collections.name, collections.description, collections.date, users.name 
FROM users, collections 
WHERE collections.user_id = users.user_id 
AND (
collections.description LIKE "%%searchTerm%%" 
OR collections.name LIKE "%%searchTerm%%" 
OR users.name LIKE "%%searchTerm%%" 
) 
AND (
reported = false 
OR (
reviewed = true 
AND approved = true 
) 
) 
+0

'SELECT DISTINCT COUNT (*) ...' – rackemup420

Antwort

0

Sie Aktivzählwert tun können (1) oder count (collections.collection_id)

SELECT 
    count(collections.collection_id) 
FROM 
    users, 
    collections 
WHERE 
    collections.user_id = users.user_id 
    AND (
      collections.description LIKE "%%searchTerm%%" 
      OR collections.name LIKE "%%searchTerm%%" 
      OR users.name LIKE "%%searchTerm%%" 
     ) 
    AND (
     reported = false 
     OR (
      reviewed = true 
      AND approved = true 
     ) 
    ) 
+0

das hat funktioniert, danke – johowie

0

Zwei Möglichkeiten, man kann

SELECT count(*) 
FROM... 

, die die Zählung auf Kosten der tatsächlichen Daten angezeigt werden können, oder Sie können eine Funktion in verwenden Unabhängig davon, welche Sprache Sie verwenden die Datenbank abfragen, um zu überprüfen, wie viele Zeilen gibt.

+0

guten Punkt über vielleicht das Zurückzählen in der Sprache, die machte die mysql Anfrage (in diesem Fall PHP). Ich sollte überdenken, was ich tue, weil ich tatsächlich die Abfrage erneut mit einem Limit wiederhole. Diese anfängliche Abfrage soll die Anzahl der Seiten in einem Paginierungsskript berechnen. – johowie

0

See FOUND_ROWS auch() zusammen mit SQL_CALC_FOUND_ROWS http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

Es könnte eine bessere Leistung als eine Abfrage mit einem zu tun COUNT (*) und ein anderer, um die Daten zu erhalten.

also kann eine Abfrage zu erhalten, die Ergebnisse laufen - und zugleich eine Zählung erhalten. (ok, Sie verwenden immer noch zwei Abfragen, aber die zweite ist billig, es ist nur die berechnete Summe abrufen)