Jag har en sida där man kan ladda ner musik och även betygssätta den. För att få ut en lista över låtarna använder jag följande SQL-fråga. Tabellen items innehåller listan över låtarna. Tabellen ratings innehåller en röst per rad, där en röst (ratings.value) innehåller en siffra 1-5, och koden nedan funkar korrekt för att få ut medelvärde av rösterna.
SELECT items.*, avg(value) AS item_ratings
FROM items
LEFT JOIN ratings ON items.itemid=ratings.itemid {$where} GROUP BY items.itemid
{$order}
{$dir} LIMIT 5;
Det som jag nu vill göra är att lägga till en funktion som räknar antalet klick. Så jag skapade en tabell, clicks, som innehåller kolumnerna IP, itemid och timestamp, där varje rad motsvarar ett klick. För att få ut antalet klick har jag kommit fram till följande fråga:
SELECT items.*, count(clicks.IP) AS item_ratings
FROM items
LEFT JOIN clicks ON items.itemid=clicks.itemid GROUP BY items.itemid
{$order}
{$dir} LIMIT 5;
Denna fråga funkar nästan som den ska. Det jag vill är dels att sätta ihop frågorna till en och dels att bara räkna varje IP-adress en gång.
Hjälp emottages tacksamt. :)