Avatar billede Slettet bruger
13. november 2001 - 23:15 Der er 18 kommentarer og
1 løsning

SQL sætning

Jeg har et problem?

Har har en side hvor bruger kan afkrydse en form med checkbokse om hvilke sider bruger skal se. Det er fint nok. Bruger skal have mulighed for at redigere disse valg. Jeg har en tabel i min database der hedder SIDE hvor jeg har en beskrivelse af hvilke sider der kan vælges tabelen indeholder en SIDEID og en LINK og en TITLE. Når bruger første gang tilføjer sine valg registreres det i en tabel der hedder SIDEVALG. Tabellen indeholder SIDEVALGID, BRUGERID og SIDEID. Nu kommer problemet. Jeg skal nu hente alle rækker fra SIDE.SIDEID og de skal sammenlignes med SIDEVALG.SIDEVALGID. Jeg skal altså lave et udtryk fra database hvor jeg kan se alle SIDE.SIDEID ALLE SIDE.TITLE der skal hentes alle de registrede SIDEVALGID ved BRUGERID.
fra fra SIDE.SIDEID
Avatar billede Slettet bruger
13. november 2001 - 23:16 #1
den sidste linie er en fejl
Avatar billede Slettet bruger
13. november 2001 - 23:17 #2
Jeg har prøvet at lave en forespørgsel i Databasen med Access, men jeg har ikke kunne lave en forspørgsel der tager højde for flere brugere
Avatar billede tmceu Praktikant
13. november 2001 - 23:32 #3
Det var et noget kryptisk spørgsmål, men du skal sandsynligvis kigge lidt på JOIN og OUTER JOIN. Her kommer et par forslag:

Alle sider fra SIDE + relaterede poster i SIDEVALG

SELECT SideID, Title, SidevalgID FROM Side INNER JOIN Sidevalg ON SideID=SidevalgID

Alle sider fra SIDE + relaterede poster i SIDEVALG. SidevalgID for poster uden relation til Side vises som NULL

SELECT SideID, Title, SidevalgID FROM Side LEFT OUTER JOIN Sidevalg ON SideID=SidevalgID

Håber dette hjælper.
Avatar billede Slettet bruger
13. november 2001 - 23:40 #4
Når jeg bruger dette får jeg: Join expression not supported.

SELECT SideID, Title, SidevalgID FROM Side LEFT OUTER JOIN Sidevalg ON SideID=SidevalgID
Avatar billede tmceu Praktikant
13. november 2001 - 23:42 #5
Prøv med JOIN eller INNER JOIN, der er nogle begrænsninger i Access SQL.
Avatar billede Slettet bruger
13. november 2001 - 23:58 #6
jeg for ikke fejl med denne

db.open \"SELECT side.SideID AS side_SideID, side.Title AS side_title, Sidevalg.BRUGERID, Sidevalg.SideID AS Sidevalg_SideID FROM side LEFT JOIN Sidevalg ON side.SideID=Sidevalg.SideID Where Sidevalg.BRUGERID = \" & ID & \";\", dsn,1,3

Det eneste problem er så at hvis fx bruger 1 har valgt SIDEID 1,2,3,4 0g 5 og en anden har valgt 6,7 og 8 så er alle sideid valgt på de to brugere og så vil der ikke returneres et null ud for bruger 1
Avatar billede Slettet bruger
13. november 2001 - 23:59 #7
Det eneste problem er så at hvis fx bruger 1 har valgt SIDEID 1,2,3,4 0g 5 og en anden har valgt 6,7 og 8 så er alle sideid valgt på de to brugere og så vil der ikke returneres et null ud for bruger 1 hvor bruger 1 ikke har valgt sideID
Avatar billede eagleeye Praktikant
14. november 2001 - 00:09 #8
Prøv med denne, den skulle kun tage sideID hvor BrugerID = ID:

db.open \"SELECT side.SideID AS side_SideID, side.Title AS side_title, Sidevalg.BRUGERID, Sidevalg.SideID AS Sidevalg_SideID
FROM sidevalg RIGHT JOIN Side ON sidevalg.sideID = Side.sideID
WHERE sidevalg.brugerID=\" & ID & \";\",dsn,1,3
Avatar billede Slettet bruger
14. november 2001 - 00:17 #9
Problemet er at den ikke returnere alle poster fra Side.SideID Where BrugerID = ID hvis nu alle Side.SideID er valgt i Sidevalg. hvis nu bruger 1 har valgt ½ delen af de Sidevalg der er og Bruger 2 har valgt den anden  ½ del så vil den ikke returnere alle SideID og give SIDEvalg værdien Null. Det vil den godt hvis der kun er registreret en bruger som ikke har valgt alle sidevalg
Avatar billede Slettet bruger
14. november 2001 - 00:27 #10
Det kan være jeg skal tænke alternativt.
jeg kan jo kun sende en værdi i en checkbox men jeg kunne tilføje flere databaseværdier ved at adskille dem med et tegn og så lave en split funktion. Så kommer jeg bare til at få en masse redundans i min database.
Avatar billede Slettet bruger
14. november 2001 - 00:29 #11
Hovsa, jeg kom til at acceptere dit svar eagleeye det var ikke meningen.

Jeg har jo ikke reelt fået en løsning til mit spørgsmål
Avatar billede eagleeye Praktikant
14. november 2001 - 00:37 #12
skal jeg lige oprette et spm så du kan få points tilbage..


Men jeg forstår ikke helt hvad du skriver...muligvis fordi jeg ikke helt forstår problmmet. Så vidt ejg kan se får du alt hvad du skal bruge: hvilke sider brugeren har valgt.
Avatar billede eagleeye Praktikant
14. november 2001 - 00:42 #13
Jeg har oprette http://www.eksperten.dk/spm/133592 med points til dig.
Så må du oprette spørgsmålet igen.

Jeg går i seng om 5 min..
Avatar billede Slettet bruger
14. november 2001 - 00:50 #14
det er korrekt.

ex.

Sidetabel

SIDEID    Title      Link
1          Forside    Forside.asp
2          Min side    Minside.asp

SideValgtabel

SidevalgID    BrugerID    SIDEID
1                1          1
2                1          2
3                2          1

Tabel som jeg gerne vil have

BrugerID  SIDE.SIDEID SIDEVALG.SIDEID SIDE.TITLE
1              1            1            Forside
1              2            2            Minside.asp
2              1            Null        Forside
2              2            1            Minside.asp


Det kan jeg ikke med de SQL sætniger jeg har fået!
Avatar billede Slettet bruger
14. november 2001 - 00:52 #15
Dette spørgsmål er stadig åben og jeg giver 150 point til den der kan hjælpe
Avatar billede tmceu Praktikant
14. november 2001 - 10:56 #16
Nej, det er ikke længere åbent, da du har accepteret et svar. Læg mærke til at du kun  har mulighed for at kommentere, ikke svare.

Du er nødt til at oprette spårgsmålet igen og måske skulle du formulere det mere præcist :-)
Avatar billede eagleeye Praktikant
19. november 2001 - 15:10 #17
BrugerID  SIDE.SIDEID SIDEVALG.SIDEID SIDE.TITLE
1              1            1            Forside
1              2            2            Minside.asp
2              1            Null        Forside                <---Hvorfor har du brug for denne ???
2              2            1            Minside.asp


Avatar billede Slettet bruger
19. november 2001 - 17:45 #18
Det har jeg heller ikke mere!

jeg har løst problemet med ombygning af database og lavet et andet script.

Avatar billede eagleeye Praktikant
19. november 2001 - 17:46 #19
ok :)
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