Cześć, mam mały problem.
Kombinuje i nie mam pojęcia, jak zliczyć głosy w ankiecie.
W ankiecie na sztywno ustawione jest 5 rzeczy, na które można głosować, głos można oddawać raz na miesiąc. Głosy zapisuje w takiej tabeli:
CREATE TABLE IF NOT EXISTS `glosowanie` (
`glosowanie_id` int(5) NOT NULL AUTO_INCREMENT,
`glosowanie_user_id` int(5) NOT NULL,
`utwory_id` int(5) NOT NULL,
`glosowanie_data` date NOT NULL,
PRIMARY KEY (`glosowanie_id`)
)
Chodzi o to, aby wyciągnąć stąd liczbę głosów na poszczególne utwory z poszczególnej ankiety. Przynależność do poszczególnej ankiety, mam zapisaną w innej tabeli:
CREATE TABLE IF NOT EXISTS `utwory` (
`utwory_id` int(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`utwory_nazwa` text COLLATE utf8_polish_ci NOT NULL,
`ranking_id` int(5) NOT NULL,
PRIMARY KEY (`utwory_id`)
)
W skrócie, chcę wyciągnąć z tabeli glosowanie liczbę głosów w kolejności od największej do najmniejszej, z warunkiem, że głosy te muszą należeć do tej samej ankiety (tabela utwory).
Mam nadzieję, że zrozumiale to przekazałem

Czekam na podpowiedzi

Ok, wymyśliłem coś. Coś co wygląda tragicznie, ale... działa

$i=0;
//wybranie utworów z podanego rankingu
WHERE ranking_id='".$_GET['id']."'");
{
$utwory_id[$i] = $wiersz["utwory_id"];
$i++;
}
$i=0;
//wyświetlenie głosów dla utworów, które mają jakikolwiek głos
$link3=mysql_query("SELECT utwory_nazwa, utwory_id, COUNT(utwory_id) AS wynik FROM glosowanie LEFT JOIN utwory USING (utwory_id)
WHERE utwory_id=".$utwory_id[0]." || utwory_id=".$utwory_id[1]." || utwory_id=".$utwory_id[2]." ||
utwory_id=".$utwory_id[3]." || utwory_id=".$utwory_id[4]."
GROUP BY utwory_id ORDER BY wynik DESC");
{
echo "<tr><td>".$wiersz3["utwory_nazwa"]."</td><td>".$wiersz3["wynik"]."</td></tr>"; $utwory_id[$key]=NULL;
}
//wyświetlenie głosów (zerowych) dla utworów bez oddanego głosu
$link4=mysql_query("SELECT utwory_id, utwory_nazwa FROM utwory WHERE ranking_id='".$_GET['id']."'");
$i=0;
{
if($utwory_id[$i]==NULL) {} else { echo "<tr><td>".$wiersz4["utwory_nazwa"]."</td><td>0</td></tr>"; } $i++;
}
Mimo wszystko, jak ktoś ma pojęcie jak to zoptymalizować to proszę pisać/podpowiadać
Ten post edytował Piotrroger 5.06.2014, 21:49:42