webForumDet fria alternativet

Två SQL-frågor från samma tabell

4 svar · 298 visningar · startad av Mahh

MahhMedlem sedan juli 200329 inlägg
#1

Kan börja med att nämna att jag använder MySQL.

Denna SQL-fråga listar alla "trådarna" i det valda forumet:

SELECT ID,namn,rubrik,mess,svar FROM MB_inlagg WHERE forumID =" & CLng(Request.QueryString("fID")) & " AND orginal=1 ORDER BY datum DESC

Informationen jag skriver ut ser ut så här:
rubrik + mess(första 20 tecknen) | svar | namn + datum

Nu vill jag även att senast gjorda inlägget syns tillsammans med "tråden", så här:
rubrik + mess(första 20 tecknen) | svar | namn + datum | senaste inlägg i aktuell tråd + skribent

Jag vill med andra ord välja ut det senaste inlägget med samma inlaggID som orginaltråden("orginal=1") men med villkoret "orginal=2" och med samma forumID som orginaltråden

Tabellen MB_inlagg ser ut så här:
ID
forumID
inlaggID
namn
rubrik
mess
datum
orginal
svar

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SELECT m1.ID,
       m1.namn,
       m1.rubrik,
       m1.mess,
       m1.svar,
       m1.datum,
       m2.datum as senastDatum,
       m2.namn  as senastSkribent
   FROM MB_inlagg m1 
   inner join MB_inlagg m2 on m1.inlaggid = m2.inlaggid
   inner join MB_inlagg m3 on m2.inlaggid = m3.inlaggid
  WHERE m1.forumID = :fid
   AND  m1.orginal=1
  group by 
     m1.ID,
     m1.namn,
     m1.rubrik,
     m1.mess,
     m1.svar,
     m1.datum,
     m2.datum,
     m2.namn
  having m2.datum = max(m3.datum)
  ORDER BY senastDatum DESC
MahhMedlem sedan juli 200329 inlägg
#3
Set RS = Conn.Execute("SELECT m1.ID,m1.namn,m1.rubrik,m1.mess,m1.svar,m1.datum,m2.datum AS senastDatum,m2.namn  AS senastSkribent " _
						& "FROM MB_inlagg m1 " _
						& "INNER JOIN MB_inlagg m2 ON m1.inlaggid = m2.inlaggid " _
						& "INNER JOIN MB_inlagg m3 ON m2.inlaggid = m3.inlaggid " _
						& "WHERE m1.forumID=1 " _
						& "AND m1.orginal=1 " _
						& "GROUP BY m1.ID,m1.namn,m1.rubrik,m1.mess,m1.svar,m1.datum,m2.datum,m2.namn " _
						& "HAVING m2.datum = max(m3.datum) " _
						& "ORDER BY senastDatum DESC")

Denna SQL-fråga ger mig ett felmeddelande om att kolumnen "m2.datum" inte finns.

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18]Unknown column 'm2.datum' in 'having clause'

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Hata Mysql.

HAVING senastDatum = max(m3.datum)

Blir det bättre så.

MahhMedlem sedan juli 200329 inlägg
#5

LarsG skrev:

Hata Mysql.

Jasså, det är så illa... :)

Nu får jag lite utskrifter, har dock fortfarande problem.

I kolumnen "Senaste inlägg" skrivs namnet och datumet då den senaste tråden skrevs(då "orginal=1"), inte då senaste inlägget gjorts. Det är även ett och samma namn och datum som listas för alla trådar.

Ska försöka få ordning på det, annars återkommer jag.

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