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.
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
------------------ essentitia preter non sans multiplicandum