webForumDet fria alternativet

Addera = "SELECT TOP 1 * FROM ------Flera tabeller-------

ASP

7 svar · 352 visningar · startad av Norcomp

Medlem sedan nov. 200323 inlägg
Frågan#1

Hur löser man detta ?
Jag vill visa det senaste inlägget
sorterat efter "date1" från flera tabeller

har provat detta men då visar den bara det senaste från tb2

Addera = "SELECT TOP 1 * FROM tabell1 as tb1, tabell2 as tb2 order by tb1.date1 DESC, tb2.date1 DESC"

// Norcomp

Medlem sedan dec. 20003 887 inlägg
#2

Jag har en känsla av att det blir enklare om du tar en tabell i taget.

Set objConn = Server.CreateObject("ADODB.Connection")

strSQL = "SELECT TOP 1 * FROM tabell1 ORDER BY date1 DESC"
Response.Write objConn.Execute(strSQL)(0)

strSQL = "SELECT TOP 1 * FROM tabell2 ORDER BY date1 DESC"
Response.Write objConn.Execute(strSQL)(0)

objConn.Close
Set objConn = Nothing

Nu kanske inte det är så du vill göra, men annars förstår jag inte vad du menar med att visa det senaste inlägget från flera tabeller.

Medlem sedan nov. 200323 inlägg
#3

Jag menar så här !

Jag har ett forum och en access databas med flera tabeller
( en för varje kategori i forumet )
och nu vill jag visa det senaste inlägget ur dom alla
alltså inte 1st från varje tabell utan totalt 1st inlägg

// norcomp

Medlem sedan okt. 2003165 inlägg
#4

Godkväll!

Du får ursäkta att jag inte orkar tänka ut en bättre lösning för tillfället, dock kan du taga ut det senaste ut alla tabeller, och sedan spara dessa i en temp-tabell och sedan taga ut det senaste i temp-tabellen...

Mvh Björn M

Medlem sedan mars 20025 907 inlägg
#5

Det känns väldigt udda att ha en tabell för varje forumkategori. Jag antar att tabellerna är i princip likadana. Borde det inte vara smidigare att ha all data i samma tabell (och kanske ha en kolumn som visar vilken forumkategori tråden hör till)?

Medlem sedan dec. 20003 887 inlägg
#6

M'kay... jag gissar att det blir enklare att ta tabell för tabell då som jag beskrev, fast med en liten annan metod, istället för att baka ihop en knölig SQL-fråga för det. Det känns som om den skulle bli knölig så här på morgonkvisten ivarjefall ;)

strSQL = "SELECT TOP 1 date1 FROM tabell1 ORDER BY date1 DESC"
dteTop = CDate(objConn.Execute(strSQL)(0))
intTbl = 1

[blue]'upprepa följande för varje tabell...[/blue]
strSQL = "SELECT TOP 1 date1 FROM tabell2 ORDER BY date1"
dteTest = CDate(objConn.Execute(strSQL)(0))

If dteTest > dteTop Then
  dteTop = dteTest
  intTbl = 2
End If

Nu kommer dteTop att innehålla det datum då den senaste posten lades till och intTbl vilken tabell det var i.

För att göra som jvc_man föreslog kan väl något liknande fungera

strSQL = "SELECT TOP 1 * INTO tblTemp FROM tabell1 ORDER BY date1 DESC"
objConn.Execute strSQL, , 128

strSQL = "SELECT TOP 1 * INTO tblTemp FROM tabell2 ORDER BY date1 DESC"
objConn.Execute strSQL, , 128

[blue]'och så vidare - sedan väljer du ut den senaste ur den temporära tabellen[/blue]
strSQL = "SELECT TOP 1 * FROM tblTemp ORDER BY date1 DESC"
objRS.Open strSQL, objConn

Response.Write objRS.GetString

strSQL = "DROP TABLE tblTemp"
objConn.Execute strSQL, , 128
Medlem sedan nov. 200323 inlägg
#7

jag tror jag möblerar om i databasen och lägger till en kolumn istället

Medlem sedan dec. 20003 887 inlägg
#8

Norcomp skrev:

jag tror jag möblerar om i databasen och lägger till en kolumn istället

Det låter som den enklaste lösningen även om det uppstår en viss redundans i databasen då. :)

297 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
153 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
153 ms — ändringar (db)