TypeMedlem sedan mars 20021 239 inlägg 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?
Tacksam för snabba svar ;)
LarsGMedlem sedan dec. 200012 464 inlägg select t1.namn, t1.poäng/count(t2.namn)
from t1 join t2 on t1.namn = t2.namn
group by t1.namn, t1.poäng
TypeMedlem sedan mars 20021 239 inlägg 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?
LarsGMedlem sedan dec. 200012 464 inlägg select t1.namn, t1.poäng/
(select count(name) from t as t2
where t2.namn = t1.namn)
from t as t1
where ...
TypeMedlem sedan mars 20021 239 inlägg 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...
TypeMedlem sedan mars 20021 239 inlägg 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
;
TypeMedlem sedan mars 20021 239 inlägg 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
enkat_points
id, answerID, nollegruppID, points
faddrar_nollegrupper
id, namn, beskrivning, onskat_antal_nollan
Någon som har någon idé på varför det inte funkar?