Sorteringsproblem

Databaser & SQL

2 svar · 192 visningar · startad av bagera

Medlem sedan jan. 2001126 inlägg
Trådstart#1

Har en ganske bökig sql sträng som inner joinar 3 tabeller usertable, questiontable och responsetable på ett forum med olika användar nivåer,jag visar senaste inlägg eller fråga beroende på användare och vill inte ha dubletter.

finns det något sätt att använda select distinct när man hämtar data ur flera tabeller med hjälp av inner join?
det är alltså frågan som visas i slutänden.

sel ="SELECT DISTINCT responsetable.usertableid, questiontable.class, questiontable.subject, responsetable.responsetext, questiontable.questiontableid, responsetable.questiontableid FROM responsetable inner join questiontable on questiontable.questiontableid = responsetable.questiontableid where responsetable.usertableid ='"& vart &"' and questiontable.class ='"& level &"' or responsetable.usertableid ='"& vart &"' and questiontable.class ='"& level2 &"'or responsetable.usertableid ='"& vart &"' and questiontable.class ='"& level3 &"';"

Denna sträng visar ju samma fråga flera gånger om man svarat på sin egen fråga.

Medlem sedan dec. 200012 464 inlägg
#2

Det är nog group by du behöver. Nu är det lite svårt för mig att skriva frågan då jag inte känner till alla kolumner i dina tabeller.

sel ="SELECT responsetable.usertableid, questiontable.class, questiontable.subject, responsetable.responsetext, questiontable.questiontableid, responsetable.questiontableid FROM responsetable inner join questiontable on questiontable.questiontableid = responsetable.questiontableid where
responsetable.responsetableid in (
select max(responsetableid)
 from responsetable inner join questiontable on questiontable.questiontableid = responsetable.questiontableid 
where
 responsetable.usertableid ='"& vart &"' and questiontable.class ='"& level &"' or responsetable.usertableid ='"& vart &"' and questiontable.class ='"& level2 &"'or responsetable.usertableid ='"& vart &"' and questiontable.class ='"& level3 &"' group by questiontable.questiontableid )

Dvs inom varje grupp med samma questiontableid i responsetable så tar man enbart det högsta responsetableid

Medlem sedan jan. 2001126 inlägg
#3

Lyckades lösa det till slut, verkar som det strulade bara för att jag döpt en av tabellerna till class.

Tack tack!

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)