Mam pewien problem, ponieważ nie mogę wymyślić w jaki sposób optymalnie zliczyć rekordy z różnymi typami ocen.
Chcę sprawdzić ile razy dana osoba dostała 1, 2, 3 itd.
Kod
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='2'"))[0];
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='3'"))[0];
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='4'"))[0];
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='5'"))[0];
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='3'"))[0];
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='4'"))[0];
mysqli_fetch_row(mysqli_query($connection, "SELECT count(*) FROM rating WHERE user='$user[id]' AND ocena='5'"))[0];
Kilka zapytań wygląda dość śmiesznie i niepotrzebnie się wykonują zamulając przy okazji.
Myślałem nad tym, żeby po prostu w tabeli z użytkownikami zrobić kolumnę "oceny" a w niej zapisywać oceny np w tej sposób:
Kod
|0|3|3|1|
Gdzie od lewej to ilość ocen 2, 3, 4, 5 a potem wyciąganie tego np. explode'm, ale to rozwiązanie mi się trochę nie widzi i wolałbym jednak w jakiś optymalny sposób w 1 zapytaniu zliczać wszystkie oceny a potem je wyciągać np:
Kod
echo $query['ocena_2']
echo $query['ocena_3']
...
echo $query['ocena_3']
...
Rozważałem też opcję zaznaczenia wszystkiego i w pętli while potem zliczanie danych ocen do zmiennych, ale to chyba jeszcze gorszy sposób niż te kilka zapytań...
Ma ktoś może jakieś ciekawe pomysły?
Pozdrawiam serdecznie!