Avatar billede lund_dk Praktikant
02. oktober 2006 - 11:35 Der er 4 kommentarer og
1 løsning

SELECT kommando

Set rsMeddelser = Conn.Execute("select top 8 * from meddelser where instr(session(grupper),grupper) <> 0 order by dato")


I min session(grupper) har jeg eks dette: 1,4,6,7
I min Grupper i min tabel "meddelser" har jeg eks. 2,4,5

Det jeg vil, er at vise meddelser hvor et ID i min session(grupper) passer med id fra Grupper fra tabellen.

Hvordan klarer jeg det? Den metode jeg har her giver mig fejl..
Avatar billede ldanielsen Nybegynder
02. oktober 2006 - 12:13 #1
Du har lavet en uhensigtsmæssig databasestruktur. Du bør have en tabel med meddelelser:

Meddelelse
-------------
MeddelelseID
steTekst

- én med grupper:

Gruppe
------
GruppeID
strGruppeNavn

- og én med tilknytninger mellem menddelser og grupper:

Meddelelse_Gruppe:
---------------
MeddelelseID
GruppeID

Det kaldes en mange-til-mange relation
Avatar billede lund_dk Praktikant
02. oktober 2006 - 13:05 #2
Syntes bare det giver så mange tabeller at skulle skrive i og læse fra..
Avatar billede lund_dk Praktikant
02. oktober 2006 - 13:26 #3
Men okay, hvis jeg hopper på den løsning, har jeg her lavet dette, når jeg opretter en bruger og skal tilknytte den grupperne

Kan dette gøres nemmere end denne måde?

'finder id
strNy = "select * from Film order by ID desc LIMIT 1"
Set RSNy= conn.Execute(strNy)
Nyid = rsNy("ID")
Set RSNy=Nothing



strGrupper = Request.Form("grupper")

ArrGrupper = Split(strGrupper, ",")

For idx=LBound(ArrGrupper) To UBound(ArrGrupper)
   
Set rsAdd1= Server.CreateObject("ADODB.Recordset")
strSQLAdd1= "select * from bruger_grupper"
rsAdd1.Open strsqlAdd1, conn, 1, 3
rsAdd1.addnew
rsAdd1("gruppeid") = ArrGrupper(idx)
rsAdd1("brugerid") = nyID
rsAdd1.addnew
set rsAdd1= nothing
Next
Avatar billede ldanielsen Nybegynder
09. oktober 2006 - 00:46 #4
Det ser da rigtigt ud men sådan her:

strNy = "select * from Film order by ID desc LIMIT 1"
Set RSNy = conn.Execute(strNy)
Nyid = rsNy("ID")
Set RSNy = Nothing

strGrupper = Request.Form("grupper")
ArrGrupper = Split(strGrupper, ",")

Set rsAdd1= Server.CreateObject("ADODB.Recordset")
strSQLAdd1= "select * from bruger_grupper"
rsAdd1.Open strsqlAdd1, conn, 1, 3
For idx = LBound(ArrGrupper) To UBound(ArrGrupper)
  rsAdd1.addnew
  rsAdd1("gruppeid") = ArrGrupper(idx)
  rsAdd1("brugerid") = nyID
  rsAdd1.update
Next
rsAdd1.close
Set rsAdd1= nothing


Så åbner du kun rsAdd1 én gang, det er hurtigere. Jeg har tilføjet rsAdd1.update i stedet for din anden addnew(?), sådan skal det være. Med forbehold for at jeg ikke kender så meget til mysql
Avatar billede lund_dk Praktikant
14. november 2006 - 17:28 #5
lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester