JAg har en liten fin sql som i grunden fungerar bra;
[kod]
SELECT Count(Listan.Ratt) AS Antal, Listan.Ratt AS Rätt FROM Listan
GROUP BY Listan.Ratt ORDER BY Listan.Ratt DESC
[kod]
Jag får då ut ett resultat som ser ut så här:
10 = 1222
9 = 203
8 = 2200
Nu ville jag försöka att "få tag" på t ex alla som har tio rätt, och jag antar att
man bör göra det i sql:en och använda en psedonym.
Tacksam för förslag.
Jag vet att jag skulle kunna göra 10 st sql men målet är ju att kunna göra
detta i en sql.
Hur ser tabellerna ut som du använder för att veta vilka som är "användare", samt tabellen för listan med antalet rätt, samt hur ser deras relation ut?
Krångla inte till det så mycket. Gör en for-loop och query:a för varje antal rätt.
for ($i = 0; $i <= 10; $i++) {
query = "SELECT COUNT(något) AS antal_personer_med_poäng FROM tabell WHERE antal_rätt = '".$i."'";
//behandla queryn.
echo "Vi hade ".$query_result['antal_personer_med_poäng']." st som hade ".$i." poäng rätt.";
}
Utskriften och behandlingen av queryn är inte direkt klar, men det ger dig nog en idé om hur du kan lösa det. Tips, stoppa in resultatet i en array, så kan du jobba med den när du ska skriva ut listan.
Eftersom all databashantering sker via en web service, så tänkte jag att det skulle vara dumt med många databasanrop, annars så kunde jag ju göra tio stycken...
Jag funderade på en sql ung så här:
SELECT
(
SELECT Count(Listan.Ratt) AS Antal10, Listan.Ratt AS ten
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=10
)
,
(
SELECT Count(Listan.Ratt) AS Antal9, Listan.Ratt AS nine
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=9
)
,
(
SELECT Count(Listan.Ratt) AS Antal8, Listan.Ratt AS eight
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=8
)
,
(
SELECT Count(Listan.Ratt) AS Antal7, Listan.Ratt AS seven
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=7
)
,
(
SELECT Count(Listan.Ratt) AS Antal6, Listan.Ratt AS six
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=6
)
,
(
SELECT Count(Listan.Ratt) AS Antal5, Listan.Ratt AS five
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=5
)
,
(
SELECT Count(Listan.Ratt) AS Antal4, Listan.Ratt AS four
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=4
)
,
(
SELECT Count(Listan.Ratt) AS Antal3, Listan.Ratt AS tree
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=3
)
,
(
SELECT Count(Listan.Ratt) AS Antal2, Listan.Ratt AS two
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=2
)
,
(
SELECT Count(Listan.Ratt) AS Antal1, Listan.Ratt AS one
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=1
)
,
(
SELECT Count(Listan.Ratt) AS Antal0, Listan.Ratt AS zero
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=0
)
ORDER BY Listan.Ratt DESC;
Denna fungerar dock inte jag får syntaxfel operator saknas. Är jag ute och
cyklar?
*************************
När jag ser resultatet av mina ansträngningar så får det mig att fundera
mera på vad überfuzz skrev.
Peter, den där true-grejen, jag förstår inte riktigt hur den fungerar? Måste han en binär typ på den (svar1 alltså)?
Vidare så kan jag inte så här på rak arm se hur man går från tex antal rätt på fråga ett bland alla tävlande till hur många som hade ett rätt när de tävlade.
Peter, den där true-grejen, jag förstår inte riktigt hur den fungerar? Måste han en binär typ på den (svar1 alltså)?
Vidare så kan jag inte så här på rak arm se hur man går från tex antal rätt på fråga ett bland alla tävlande till hur många som hade ett rätt när de tävlade.
Jag utgick från att han sparar huruvida svaret är rätt eller inte i svarX. Det kan givetvis visa sig vara ett felaktigt antagande eftersom varken fältbeskrivning eller exempel på tabellinnehåll givits.
Om ovanstående visar sig vara ett korrekt antagande får man ju, genom att räkna alla med svar1 = true, reda på hur många som har svarat rätt på den första frågan. Hur många som totalt har 1 rätt verkar man få genom att gruppera på Ratt och utföra en count.
För att specifera lite mera så är det i fältet Ratt som jag har räknat hur många
rätt respektive tävlande har. I de andra fälten så har jag sparat svaren.
I dag så kanske jag tycker att denna tabellen bara behövde vara id, namn, antal_Ratt,
tid och datum, men gjort är gjort.
Innan jag sparar i databasen så har jag kollat det och sedan så sammanfattar jag alla
svaren i Rätt.
Frågesporten ligger på https://www.saw.se under aktivitet/musikfrågan.