SQL = "SELECT * " & _
" From forum_topics ft inner join forum_posts fp on ft.id_trad = fp.id_trad" & _
" left outer join members m on m.id = ft.user_id" & _
" WHERE ft.rum = '"&rummet1&"' order by ft.senasteinlagg desc, fp.id desc"
Den gör inte riktigt som jag vill. När jag skriver ut alla poster med hjälp av denna sql-sats så skriver den ut alla poster som finns i tabellen forum_posts. Men jag vill att den endast jag skriva ut alla poster som finns i forum_topics.
Fattar inte vad jag har gjort fel i sql-satsen.
Tabellerna ser ut som följande:
forum_topics
id_trad
subject
user_id
datum
rum
locked
senasteinlagg
ampymail
last
svar
forum_posts
id
id_trad
user_id
message
datum
members
id
username
Det jag vill göra är alltså först och främst hämta alla poster från tabellen forum_topics. Sen vill jag hämta det senaste inlägget från forum_posts där id_trad är lika med id_trad i tabellen forum_posts. Sen vil jag ju även veta namnet på user_id och den får jag alltså från tabellen members.
SQL = "SELECT * " & _
" From forum_topics ft inner join forum_posts fp on ft.id_trad = fp.id_trad" & _
" left outer join members m on m.id = ft.user_id" & _
" WHERE ft.rum = '"&rummet1&"' " &_
" and fp.id in (select max(id) from forum_posts " & _
" where id_trad = fp.id_trad ) " & _
" order by ft.senasteinlagg desc, fp.id desc"
Microsoft OLE DB Provider for ODBC Drivers fel '80040e09'
[TCX][MyODBC]You have an error in your SQL syntax near 'select max(id) from forum_posts where id_trad = fp.id_trad ) order by ft.sena' at line 1
Den innehåller det datum då det gjordes en post i den tråden. Man kan ju hämta det värdet i den andra tabellen (forum_posts) men det tar väl bara en massa tid?
QL = "SELECT * " & _
" From forum_topics ft inner join forum_posts fp " & _
" on ft.id_trad = fp.id_trad and fp.datum = ft.senasteinlagg" & _
" left outer join members m on m.id = ft.user_id" & _
" WHERE ft.rum = '"&rummet1&"' order by ft.senasteinlagg desc, fp.id desc"
Den satsen fungerar perfekt men jag glömde att lägga till en sak :l
Värdet fp.user_id innehåller ju det id på den användare som skrev inlägget sist i tråden. Även det usernamet vill jag hämta från tabellen members. Går det att fixa eller får jag skapa ett nytt recordset?
QL = "SELECT ft.*,fp.*,m1.*,m2.username as lastPoster " & _
" From forum_topics ft inner join forum_posts fp " & _
" on ft.id_trad = fp.id_trad and fp.datum = ft.senasteinlagg" & _
" left outer join members m2 on m2.id = fp.user_ud " & _
" left outer join members m1 on m1.id = ft.user_id" & _
" WHERE ft.rum = '"&rummet1&"' order by ft.senasteinlagg desc, fp.id desc"
En outer join ger resultat även om inte joinvillkoret uppfylls, då är alla kolumner från den injoinade tabellen null. I en inner join kommer inte dessa poster med överhuvudtaget.
Fast jag kanske inte fick svara? ;)
Mvh,
252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849