UrMe Medlem sedan apr. 2001 762 inlägg Frågan 20 feb. 2013 11:47 #1 Jag har en SQL fråga så här:
SELECT document_id FROM `statistics` WHERE download_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 day) AND CURDATE() GROUP BY document_id, user_ip
Jag grupperar så dokument_id + user_ip blir unikt.
Nu visar denna SQL fråga t.ex
16
16
16
19
19
21
25
25
25
Men jag skulle vilja ha ut denna SQL fråga så här:
ID | Antal
16 | 3
19 | 2
21 | 1
25 | 3
Har försökt med olika varianter av subqueries osv men får aldrig ut korrekt antal. Någon som har en idé?
Nu var det ett tag sen jag skrev SQL men:
SELECT document_id as ID, Count(document_id) as Antal FROM `statistics` WHERE download_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 day) AND CURDATE() GROUP BY document_id, user_ip
är väl så man få den struktur du vill ha? Eller något i den stilen?
UrMe Medlem sedan apr. 2001 762 inlägg Det har jag provat men den räknar ju varje id+user_ip som 1, eftersom den är grupperad där efter.
Så här blir resultatet t.ex:
Array
(
[0] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[1] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[2] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[3] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[4] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[5] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[6] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[7] => Array
(
[document_id] => 16
[0] => 16
[antal] => 1
[1] => 1
)
[8] => Array
(
[document_id] => 17
[0] => 17
[antal] => 1
[1] => 1
)
...
...
...
@nders Medlem sedan juni 2000 32 967 inlägg Kanske kan detta lira?
SELECT document_id as ID, count(distinct user_ip) as antal
FROM `statistics`
WHERE download_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 day) AND CURDATE()
GROUP BY document_id
mvh
UrMe Medlem sedan apr. 2001 762 inlägg Kanon! Det där verkar fungera! :)