webForumDet fria alternativet

Flera left joins?

Databaser & SQL

2 svar · 125 visningar · startad av mozilla

Medlem sedan juli 20011 084 inlägg
Frågan#1

Jag har en SQL fråga som blivit ganska lång nu, den är översatt från Access och ser ut så här:

SELECT q.question,Count(a.poll_ID),q.week,q.year,q.poll_date,u.nickname,Max(a.votes),Sum(a.votes)[b],Count(pu.poll_ID)[/b]
FROM tblP_query q 
INNER JOIN tblUser u ON u.user_ID = q.user_ID 
[b]LEFT JOIN tblP_user pu ON pu.poll_ID = q.poll_ID [/b]
LEFT JOIN tblP_answer a ON a.poll_ID = q.poll_ID 
WHERE (q.week < "& DatePart("ww",Now(),2)+1 &" OR q.year < "& DatePart("yyyy",Now(),2) &") 
GROUP BY q.poll_ID 
ORDER BY q.year,q.week DESC

Problemet ligger i Count(pu.poll_ID), jag får inte ut rätt svar, jag får ut dubbelt så mycket, om det finns 1 post så får jag ut 2, finns det 4 poster får jag ut 8 osv. Varför? En enkel lösning vore ju bara att dela svaret med 2, men jag tänkte hör mer er om ni vet någon lösning först? Tilläggas kan att om man tar bort tblP_answer ur frågan får jag ut rätt svar...?

Medlem sedan dec. 200012 464 inlägg
#2

Hur ser tabellerna ut? Med lite exempeldata i, tack.

Varför ser din group by ut som den gör?

Vad är det du vill åstadkomma?

Det verkar som om du försöker få fram för mycket i samma fråga.

Medlem sedan juli 20011 084 inlägg
#3

  :i Jag löste det på ett annat sätt... eller, jag kom på att Sum(a.votes) och Count(pu.poll_ID) blir samma resultat, så jag slängde bort Counten helt...

300 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
153 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
157 ms — ändringar (db)