Odczyt z bazy według sumy kolumny

0

Cześć.
W bazie danych w dziwny sposób klient przechowuje dane. Struktura bazy:

id | id_p | rate

Przykładowe dane:

1 | 2 | 1
2 | 3 | 1
3 | 2 | 1
4 | 2 | 1
5 | 3 | -1

Muszę odczytać 10 id_p, których suma wynosi najwięcej. Czyli np. odczytuje wszystkie takie same rekordy z takim samym id_p i sumuje wszystkie wartości rate (są dodatnie i ujemne). Następnie przekazuje mi 10 id_p z największą sumą.

Kod muszę powiązać z PHP.

Co muszę zrobić? Tablica asocjacyjna? Nie wiem jak to zrobić.

Nie wiem też jak zrobić dodawanie bądź odejmowanie.

0

a co z id? i czy ma być dziesięć dla każdego id_p czy tylko dla jednego, dla którego suma jest największa
no i na koniec podstawowe pytanie - JAKA BAZA??

0
Misiekd napisał(a)

a co z id? i czy ma być dziesięć dla każdego id_p czy tylko dla jednego, dla którego suma jest największa
no i na koniec podstawowe pytanie - JAKA BAZA??

Baza MySQL
ID jest pomijany, on tylko jest kluczem, którego ja nie używam.
id_p ma zliczyć z całej bazy a wyświetlić 10 sum z znaczeniem, który to id_p

0

Po pierwsze to o co pyta Misiekd, po drugie (w zależności od pierwszego) mniej więcej:

select `X`.`SumaRate`, `X`.`id_p` from 
(select sum(`rate`) as `SumaRate`, `id_p` from `Tabela`
group by `id_p`) `X` 
order by `X`.`SumaRat` desc

(w zależności od pierwszego)

select top 10

albo

select ... limit 10

edit: aha, skoro MySQL to "limit 10"

0

Ale żeś zamotał tym zapytaniem...

SELECT id_p, Sum(rate) FROM tabela GROUP BY id_p ORDER BY 2 DESC LIMIT 10

1 użytkowników online, w tym zalogowanych: 0, gości: 1