webForumDet fria alternativet

Problem att räkna i annan tabell

8 svar · 208 visningar · startad av NETwork

NETworkMedlem sedan juni 20011 732 inlägg
#1

Hej! Jag har ställt ungefär samma fråga tidigare men nu får jag det inte att fungera igen. Jag har två tabeller för recensioner... ett exempel. Jag har en film. Varje film kan vara recenserad 1 eller flera gånger. Nu försöker jag räkna antal recensioner för varje film så här:

SELECT COUNT(ReviewID) AS Antal, Name FROM Topic T LEFT OUTER JOIN Review R ON T.GameID = R.GameID GROUP BY Name

Men det vill inte funka. Någon som ser vad som är fel?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det finns inget syntaktiskt fel i den satsen. Vad är probelemt?

NETworkMedlem sedan juni 20011 732 inlägg
#3

Japp, den funkade visst... problemet är att jag försöker plocka ut GameID också eftersom jag använder detta i min fuktion. Men när jag försöker hämta ytterligare kolumner så ballar det ur:

SELECT COUNT(ReviewID) AS Antal, Name, GamID FROM Topic T LEFT OUTER JOIN Review R ON T.GameID = R.GameID GROUP BY Name

Jag får felmeddelandet "The specified field 'GameID' could refer to more than one table listed in the FROM clause of your SQL statement."

Hur gör jag för att hämta samtliga kolumner i tabellen Topic?

LarsGMedlem sedan dec. 200012 464 inlägg
#4

I så fall måste du ha med den kolumnen i group by

SELECT COUNT(ReviewID) AS Antal, Name, GameID FROM Topic T LEFT OUTER JOIN Review R ON T.GameID = R.GameID GROUP BY Name ,gameid
NETworkMedlem sedan juni 20011 732 inlägg
#5

Provade det och det funkar med alla kolumner utom GameID... då får jag felet "The specified field 'GameID' could refer to more than one table listed in the FROM clause of your SQL statement. "

NETworkMedlem sedan juni 20011 732 inlägg
#6

Ah, jag måste såkalrt skriva till vilken tabell den tillhör eftersom den finns med i båda. :) Tack för all hjälp! :)

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Ja visst ja, du måste kvalificera kolumnnamnet eftersom det finns med i båda tabellerna

SELECT COUNT(ReviewID) AS Antal, Name, T.GameID FROM Topic T 
LEFT OUTER JOIN Review R ON T.GameID = R.GameID GROUP BY Name ,T.gameid
NETworkMedlem sedan juni 20011 732 inlägg
#8

Precis, toppen! :) För att krångla till det ännu mer så skulle jag även behöva hämta ett medelvärde från tabellen Review för respektive GameID... i tabellen finns en kolumn som heter "Overall" och denna innehåller en siffra för varje recension. Om ett spel eller en film innehåller 3 recensioner så ska jag således plocka medelvärdet från dessa tre recensioner.

Så här lyckades jag få det att fungera:

SELECT AVG(Overall) AS O, Name FROM Topic LEFT OUTER JOIN Review ON Topic.GameID = Review.GameID GROUP BY Name

Men hur slår jag ihop dessa båda sql-satser?!?!?

NETworkMedlem sedan juni 20011 732 inlägg
#9

Aha det var ju bara att lägga till AVG(Overall) AS O. :)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)