webForumDet fria alternativet

Antal förekomster samt aggregate function från två tabeller

Databaser & SQL

7 svar · 321 visningar · startad av Rikard

Medlem sedan dec. 199917 055 inlägg
Frågan#1
Medlem sedan dec. 199917 055 inlägg
#2

Skam den som ger sig. :)

SELECT t1.word, t1.description, t1.reason, count(t2.score) AS wsc 
FROM t1 
LEFT JOIN t2 
	ON t1.wordid=t2.wordid 
WHERE t1.public >= 0 
GROUP BY t1.word, t1.description, t1.reason 
HAVING ABS(SUM(t2.score))<=ABS((21-COUNT(t2.score))*2)
Medlem sedan dec. 200012 464 inlägg
#3
SELECT word, description, reason, 
(select count(score) from t2
where wordid = t1.wordid) AS wsc
FROM t1

Vad är avsikten med harangen i exists?

Medlem sedan dec. 199917 055 inlägg
#4

Kan det vara sådär enkelt, LarsG?

Medlem sedan dec. 199917 055 inlägg
#5

LarsG skrev:

Vad är avsikten med harangen i exists?

Det är en utanförliggande funktion som kollar om omröstningen redan är avgjord eller inte. Därigenom får jag också urvalet.

Medlem sedan dec. 200012 464 inlägg
#6

Kan det vara sådär enkelt, LarsG?

Om man bortser fårn villkoret med avslutade röstningar så.

Jag tycker att den nuvarande metoden ser ut att vara onödigt komplicerad.

Medlem sedan dec. 199917 055 inlägg
#7

Det är långt ifrån omöjligt att den är också... ;)
Jag ska titta närmre på ditt förslag och se hur jag kan fila till det. Tack för hjälpen! :)

Medlem sedan dec. 199917 055 inlägg
#8

Inte helt oväntat hade du rätt LarsG, om än jag har gjort om lite andra grejjer. :)

SELECT t1.word, t1.description, t1.reason, count(t2.score) AS wsc
FROM t1 
LEFT JOIN t2 
     ON t1.wordid=t2.wordid 
WHERE public >= 1 AND 
status = 0 
GROUP BY t1.word, t1.description, t1.reason
256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)