09. august 2002 - 16:35Der er
8 kommentarer og 3 løsninger
hvilken sql-sætning?
Jeg har en database med en tabel, discussionMessage, i. Den indeholder: id (unik) name title message replyId createTime
Den opbevarer diskussionsindlæg. En ny tråd har replyid=0, og i en svar-besked indeholder replyid id'et på den besked der startede tråden.
Jeg ønsker så en oversigt over de senest besvarede tråde. Dvs. ikke alle seneste besvarelser, kun én pr. tråd. Oversigten skal indeholde den oprindelige titel, createTime for den nyeste tråd, samt replyid'et (dvs. id'et på tråden).
Jeg har bikset en del med subselects, men desværre uden held. Nogen forslag?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
SELECT id, title FROM discussionMessage WHERE replyID <> 1 ORDER BY ID skulle vel give dig de nyeste
SELECT DISTINCT dm.id, dm.title, (SELECT dm2.replyID FROM discussionMessage dm2 WHERE ID=dm.id) AS repID FROM discussionMessage dm WHERE replyID <> 1 ORDER BY ID
SELECT DISTINCT dm.id, dm.title, (SELECT dm2.replyID FROM discussionMessage dm2 WHERE ID=dm.id) AS repID FROM discussionMessage dm WHERE dm.replyID <> 1 ORDER BY dm.ID
hov der er (nok) et par fejl, og du skal jo også have tiden på
SELECT DISTINCT dm.id, dm.title, (SELECT dm2.id FROM discussionMessage dm2 WHERE ID=dm.id) AS repID, (SELECT dm3.createtime FROM discussionMessage dm2 WHERE ID=dm.id) AS repTime FROM discussionMessage dm WHERE dm.replyID <> 1 ORDER BY dm.ID
tak for alle svarene. Der er desværre ingen af dem, der gør det ønskede. Et af problemerne, som jeg også selv kæmpede med er, at distinct vælger unikke poster ud fra ALLE felterne, dvs. at så længe createTime skal hives med ud, så er alle poster pr. definition unikke, med mindre de er oprettet i præcis samme øjeblik. Så hvordan kommer man udenom det?
Så fik jeg det til at virke: SELECT id, title, (SELECT MAX(dm2.createTime) FROM discussionMessage AS dm2 WHERE dm2.replyId = discussionMessage.id or dm2.id = discussionMessage.id) AS time FROM discussionMessage WHERE (replyId = 0) order by time desc
I får lidt point for at lede mig i den rigtige retning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.