04. marts 2004 - 10:04Der er
12 kommentarer og 1 løsning
Definerer SQL i forhold til det jeg vil vise
jeg er ved at sætte mit første forum op og vil vise: Overskrift til indlæg, antal svar til dette indlæg, navnet på den som har oprettet indlæget, antal gange indlæget er vist, samt sidste svar på indlæget. Link: http://www.gutternes.dk/forum.asp
for at vise dette trækker jeg på 3 tabeller i min access database. SQL: "SELECT LEFT(thread.Headline,50), Name, Views, IDthread, IDuser, posts.Date, posts.Time, posts.userID FROM thread, users, posts WHERE thread.userID = IDuser ORDER BY IDthread DESC"
Problemet er at den gentager alle posterne 3 gange som er det antal posts der er til den første + det tidspunkt den viser er det der henviser til de 3 posts (der er ingen posts til nogen andre threads)
hmm ... jeg ville nok have gjort det på en lidt anden måde. Du har nok en angivelse i din database om et indlæg er et indlæg eller en opfølging ? Altså om inlægget er "i roden" eller ikke ?
hvordan ser dine tabeller ud ? hvordan ser tabellen ud der indeholder dine indlæg ?
"SELECT LEFT(thread.Headline,50), Name, Views, IDthread, IDuser, posts.Date, posts.Time, posts.userID FROM thread, users, posts WHERE thread.userID = IDuser and posts.threadID=thread.IDthread ORDER BY IDthread DESC"
"SELECT LEFT(thread.Headline,50), Name, Views, IDthread, IDuser, posts.Date, posts.Time, posts.userID FROM thread left join users on thread.userID = IDuser left outer join posts on posts.threadID=thread.IDthread ORDER BY IDthread DESC"
jeg kan ikke lige se hvorfor den fejler, men hvis du bruger Access skal joins i () hvis der er flere af dem....
"SELECT LEFT(thread.Headline,50), Name, Views, IDthread, IDuser, posts.Date, posts.Time, posts.userID FROM ((thread left join users on thread.userID = IDuser) left outer join posts on posts.threadID=thread.IDthread) ORDER BY IDthread DESC"
hmm ... hvorfor ikke lave nogle felter på din 'thread' tabel der indeholder sidste indlæg. det ser ikke ud til at du skal bruge så meget info fra din 'posts' tabel at der er behov for at joine den ind. Jeg ville have lavet nogle dato felt ind i thread tabellen (lastPostDate og lastPostTime, og så ville jeg have fyret af denne SQL:
SELECT LEFT(thread.Headline,50), Name, Views, IDthread, IDuser, lastPostDate, lastPostTime, posts.userID, ( SELECT COUNT(*) FROM posts WHERE posts.threadID = IDthread) AS antalPosts FROM thread, users WHERE thread.userID = IDuser ORDER BY IDthread DESC
lidt omlægning i databasen og denne sql så virkede det :) SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar FROM (thread LEFT JOIN [users] ON thread.userID = users.IDuser) LEFT JOIN thread as t1 ON thread.IDthread = t1.threadID WHERE thread.threadID = 0 GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime ORDER BY thread.IDthread DESC
Synes godt om
Ny brugerNybegynder
Din løsning...
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.