Hejsan
Jag har verkligen fastnat här. Har ingen aning om hur jag ska lösa problemet.
Jag har en tabell med ett antal värden som jag summerar. Så långt går det bra. Sen har jag en annan tabell med ett antal av dessa värden. Ex:
Tabell1:
ID Namn Poäng
1 Hej 12
2 Då 34
Tabell2:
ID Namn
1 Hej
2 Hej
3 Då
4 Hej
5 Då
Jag vill dividera ner poängen i tabell 1 beroende på hur många av namnet som finns i tabell2. I mitt exempel ska det bli:
Namn Poäng
Hej 4 (dvs 12/3)
Då 17(dvs 34/2)
Mitt problem består alltså i att hämta antalet Hej i tabell 2 och dividera ner poängen för Hej. Likaså hämta Då i tabell 2 och dividera ner poängen för då. Jag lyckas inte hur jag än gör. Kan man göra en select i en annan select?
Tack för det snabba svaret LarsG.
Jag tror nog att det finns en sak som sabbar det hela som jag inte hade med i mitt exempel. Problemet är att det bara finns en tabell...
Tabellen innehåller 190 st olika frågor som ger olika poäng. En annan tabell innehåller vilka frågor som ska användas vid ett visst tillfälle med hjälp av id.
Säg att användaren kryssar i tre alternativ. Då hämtas 3 st frågor som ger olika eller samma poäng. Sen ska dessa poäng delas med totala antalet frågor som ger poäng till samma grupp...
Är det någon som förstår alls hur jag menar?
Nu blir count totala antalet namn som är valda tabellen eftersom det är samma tabell... Kan man på något sätt räkna count(tabell.namn) utifrån en ny upplaga av tabellen och inte de som är urvalda via select?
Jag kämpar på vidare. Tack LarsG. Funkar inte. får inget vettigt felmeddelande heller. säger bara att det är fel...
SELECT faddrar_nollegrupper.namn, SUM(enkat_points.points) /
(SELECT count(nollegruppID)
FROM enkat_points as enkat_points2
WHERE enkat_usersAnswers.answerID = enkat_points2.answerID) as totalPoints
FROM faddrar_nollegrupper, enkat_usersAnswers, enkat_points as enkat_points1
WHERE enkat_usersAnswers.userID = 75 AND
enkat_usersAnswers.answerID = enkat_points1.answerID AND
enkat_points1.nollegruppID = faddrar_nollegrupper.id
;
Userid = 75 använder jag för att få fram en viss användare för testning...
Jag tror jag är helt fel ute i förra exemplet. Vad tror ni om detta?
SELECT points1.nollegruppID as id, faddrar_nollegrupper.namn, SUM(points1.points) /
(SELECT count(points2.nollegruppID)
FROM enkat_points as points2
WHERE enkat_points.nollegruppID = id
) as totalPoints
FROM faddrar_nollegrupper, enkat_usersAnswers, enkat_points as points1
WHERE enkat_usersAnswers.userID = 75 AND
enkat_usersAnswers.answerID = points1.answerID AND
points1.nollegruppID = faddrar_nollegrupper.id
;
Ingenting funkar. :(
Jag försöker få ett enklare exempel att fungera mest för att man ska ha något som fungerar att utgå ifrån... Inte ens det klarar jag av :(
SELECT enkat_points.answerID,
(SELECT id
FROM enkat_points
WHERE enkat_points.nollegruppID = 21
) as totalPoints
FROM enkat_points as points1, faddrar_nollegrupper, enkat_usersAnswers
WHERE enkat_usersAnswers.userID = 75 AND
enkat_usersAnswers.answerID = points1.answerID AND
points1.nollegruppID = faddrar_nollegrupper.id
;
de riktiga tabellerna:
enkat_usersAnswers
id, userID, questionID, answerID