webForumDet fria alternativet

Visa senaste inlägg från DB

ASP

40 svar · 336 visningar · startad av nisslass

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

Jag har en databas med 6 tabeller.

Ett datumfält med datumet (datum) för inlägget och ett autonumber id (id) fält.

Jag vill ha en sida som visar de 20 senaste inläggen ur alla tabeller med den senaste först! Baserat på datum eftersom flera tabeller kan ge samma id-nr till olika inlägg eftersom de är i skilda tabeller (oj, trött skrivet)

Någon som kan hjälpa mig? Access 2000 btw. :)

------------------
-Nicke-
nSoft.nu

[Redigerat av nisslass den 11 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#2
sql = " select top 20 * from tabell1 order by datum desc " &_
"union all select top 20 * from tabell2 order by datum desc " &_
"union all select top 20 * from tabell3 order by datum desc " & _
"union all select top 20 * from tabell4 order by datum desc " &_
"union all select top 20 * from tabell5 order by datum desc " &_
"union all select top 20 * from tabell6 order by datum desc "

Det här förutsätter att alla tabellerna har samma definition. Annars så får du stoppa in dummy-värden i select-listan så att det stämmer.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2001348 inlägg
#3

samma definition?

Jag är så ny på det här med databaser, kopplingar via asp... hehe, ha överseende ;)

------------------
-Nicke-
nSoft.nu

Medlem sedan dec. 200012 464 inlägg
#4

Visst. Varför har du 6 olika tabeller? Kan du inte lägga allti en tabell och lägga till ett typfält. Livet blir mycket enklare i så fall.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2001348 inlägg
#5

Det fungerade perfekt i allafall. Jag vet inte varför men jag gjorde en tabell för varje kategori, hade inte så mycket koll på hur det fungerade till en början, men det är mer överskådligt just nu tycker jag, kanske blir problem senare. Jag vet inte... har ett typfält som avgör om det är en artikel eller inte iallafall, så jag förstår vad du menar... tack..

------------------
-Nicke-
nSoft.nu

Medlem sedan nov. 2001348 inlägg
#6

Iof's blir det enklare om jag vill lägga till fler kategorier.. nu måste jag ju in o ändra i databasen.. Tabeller går inte att lägga till genom kommando?.. ;)

Men sen? Om jag gör så, har ett "kategori" fält, o vill visa de, säg 15 senaste ur kategorin Spel, vad blir det för kod då?
select top 20 * from Bocker where kategori=spel order by datum desc
Hehe I dont know..

------------------
-Nicke-
nSoft.nu

[Redigerat av nisslass den 12 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#7

Ja, nästan

select top 15 * from Bocker where kategori='spel' order by datum desc

Att skapa en ny tabell dynamiskt bara för att du behöver en ny kategori är fel väg. Definiera datamodellen först.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2001348 inlägg
#8

Definiera datamodellen först? Hehe svåra ord för en liten kille (hm?).

Nu har jag mycket framför mig, massor med fördelar och mindre kod när jag gör så som du säger. Smartare också, att jag inte tänkte så från början.

------------------
-Nicke-
nSoft.nu

Medlem sedan nov. 2001348 inlägg
#9

Jag skoja, det va inget..
------------------
-Nicke-
nSoft.nu

[Redigerat av nisslass den 12 dec 2001]

Medlem sedan nov. 2001348 inlägg
#10

En fråga till LarsG
Visa endast när typ='Artikel' och kategori='Spel'.

select top 15 * from Bocker where kategori='spel' AND typ='Artikel' order by datum desc

Eller är jag ute o cyklar?

------------------
-Nicke-
nSoft.nu

Medlem sedan juni 200032 967 inlägg
#11

Trots att jag inte heter LarsG eller vet hur din tabell ser ut; det ser i alla fall inte ut att vara fel.

Mvh,

------------------
Don't panic!

Medlem sedan nov. 2001348 inlägg
#12

tack, jag märkte att det var jag som hade klantat till det..
Det här då?

SQL = "SELECT * FROM Allt where artikel like '%" & sokterm & "%' or rubrik like '%" & sokterm & "%' Order by Id Desc"

Enkelt sätt att söka på, men den ska bara söka bland de inlägg där fältet kategori='spel' tex.. hur petar jag in det. testade med AND kategori='Spel' men fungerade inte bra..

------------------
-Nicke-
nSoft.nu

Medlem sedan juni 200032 967 inlägg
#13

Då får vi sparka in en liten parentes också.

SQL = "SELECT * FROM Allt where (artikel like '%" & sokterm & "%' or rubrik like '%" & sokterm & "%') and kategori='spel' Order by Id Desc"

Mvh,

------------------
Don't panic!

Medlem sedan nov. 2001348 inlägg
#14

Tack tack tack.. hur skulle jag klara mig utan webForum?

------------------
-Nicke-
nSoft.nu

Medlem sedan nov. 2001348 inlägg
#15

Längre upp skriver LarsG:

Det här förutsätter att alla tabellerna har samma definition. Annars så får du stoppa in dummy-värden i select-listan så att det stämmer.

Vad menar han/du med det?

------------------
-Nicke-
nSoft.nu

[Redigerat av nisslass den 12 dec 2001]

Medlem sedan nov. 2001348 inlägg
#16

En annan sak. Nu har jag gjort om databasen så jag har Två "tables" en som alla "nyheter" sparas i o en som kommentarerna sparas i. När en kommentar skickas anges vilket ID artikeln har i fältet artikeltyp under "table" som kallas kommentarer så scripten vet vart kommentarerna skall visas. Säg nu att jag vill att det ska stå antal kommentarer någonstans på sidan tillsammans med de 20 senaste artiklarna ur "nyheter".
För tillfället:

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open Application("nyhetsdatabasen")
sql = " select top 20 * from Allt order by datum desc"

Allt = Nyheterna
Kommentarer = Kommentarerna

Vill nu skriva ut:
ex. Datum - Tid - Rubrik - Antal kommentarer.

Se www.nsoft.nu/test.asp så förstår ni hur jag menar... det där va svårt att förklara, hoppas någon förstår.

Tacksam för er som tar sig tid med mig..

------------------
-Nicke-
nSoft.nu

Medlem sedan dec. 200012 464 inlägg
#17

Vad menar jag med det? Jo

Om man gör en union

  select * from t1
   union 
  select * from t2

så måste det finnas lika många kolumner i t1 och t2.

Om det finns två kolumner i t1 (a och b) och två kolumner i t2 (c och d) så måste a och c samt b och d vara av samma datatyp eller i alla fall typer som kan jämföras. Till exempel om a har typen int och c har type date så blir det fel.

Om nu tabellerna inte har samma antal kolumner så kan man lägga till konstanter/dummies i select-listan så att det stämmer

Om t1 har 3 kolumner och t2 har två kolumner så kan man skriva så här

select a,b,c from t1
union
select d,e,1 from t2

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 200012 464 inlägg
#18

Om du vill få fram antalet kommentater för varje nyhet så kan du skriva en fråga som ser ut så här

sql = " select top 20 datum,rubrik(select count(*) from kommentarer where artikelid = a.id ) as antal from Allt as a order by datum desc"
set rs = connnection.execute(sql)
antalKommentarer = rs("antal")

Sparar du datum och tid i två olika kolumner? (Det är ganska onödigt i så fall.)

Du nämnde aldrig vilken kolumn i kommentarer som kopplar till allt så jag kallade den för artikelid

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2001348 inlägg
#19

Nej det gör jag inte.. hmm

Ja så, jag vill räkna hur många poster i "Kommentarer" vars "artikelid" fält stämmer ihop med artiklarnas id's som listas ur "Allt". Det är ju det som är problemet..

------------------
-Nicke-
nSoft.nu

Medlem sedan dec. 200012 464 inlägg
#20

Ja så, jag vill räkna hur många poster i "Kommentarer" vars "artikelid" fält stämmer ihop med artiklarnas id's som listas ur "Allt".

Det är det du får med den fråga som jag skrev.

------------------
essentitia preter non sans multiplicandum

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)