PDA

Visualizza la versione completa : [SQL] COUNT e GROUP BY


Foffo
17-06-2008, 12:07
Salve, non riesco a risolvere il seguente problema:

Ho una tabella di foto e tra i vari campi ho il titolo.
Devo contare il numero di titoli distinti che sono presenti nella tabella, ho provato con la seguente query:

SELECT COUNT(*) AS count FROM `photos` AS `Photo` WHERE title IN ( SELECT title FROM photos GROUP BY title)

ma mi torna il numero delle foto e non il numero dei titoli. La seconda query annidata restituisce una tabella le cui righe sono esattamente i titoli distinti delle foto, devo riuscire a contare le righe di questa tabella. Posso usare solo l' SQL in un' unica query e non posso aiutarmi con un mysql_affected_rows
in php.

Grazie

bum
17-06-2008, 12:23
SELECT title FROM photos GROUP BY title

io lo farei diventare

SELECT DISTINCT title FROM photos

bum
17-06-2008, 12:28
Anzi cancellerei tutto e farei cosi:

SELECT COUNT(DISTINCT title)
FROM photos

Foffo
17-06-2008, 12:32
Si, cos funziona ma purtoppo posso personalizzare solo la parte dopo il WHERE della query.

bum
17-06-2008, 12:38
se per gli alias basta aggiungerli

Foffo
17-06-2008, 12:41
In pratica sto usando il framework cakephp e il componente della paginazione fa la seguente query:
SELECT COUNT(*) AS count FROM `photos` AS `Photo`, poi posso inserire dei critery per il WHERE ma il COUNT di partenza quello.

bum
17-06-2008, 12:48
Hai provato conil mio primo suggerimento?

Foffo
17-06-2008, 12:51
Si ma il risultato lo stesso, la seconda query (SELECT DISTINCT title FROM photos) restituisce correttamente una tabella con i titoli distinti delle foto, ora devo riuscire a contare le righe di questa tabella con il COUNT della prima query. :dh:

bum
17-06-2008, 12:59
SELECT COUNT(*) AS count FROM `photos` AS `Photo` GROUP BY title

prova cos :confused:

Foffo
17-06-2008, 13:03
Torna un insieme di righe del tipo:

2
20
3
5
8
.
.
.


dove ogni riga il numero di foto con il titolo della riga.

:dh: :dh: :dh: :dh: :dh:

Loading