Avatar billede pnr Nybegynder
03. juni 2004 - 14:24 Der er 24 kommentarer og
1 løsning

hjælp til sql-sætning

Jeg har følgende rækker i en tabel:

navn
adresse
postnr
butik

Jeg skal så have lavet et udtræk som retunere alle felterne, men den skal ikke retunere de butikker der hedder spar og ligger i postnr 8000.
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 14:28 #1
Selcect * from Tabel where postnr != 8000 and butik != 'spar'
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 14:29 #2
det er selvf. select.... stavefejl er gratis....
Avatar billede holmus Nybegynder
03. juni 2004 - 14:32 #3
"SELECT navn,adresse,postnr,butik FROM tblnavn WHERE postnr NOT like '8000'"
Avatar billede boomshanka Nybegynder
03. juni 2004 - 14:32 #4
Har du prøvet den her:

SELECT * FROM <tabelnavn> WHERE navn <> 'spar' AND postnr <> 8000;
Avatar billede holmus Nybegynder
03. juni 2004 - 14:33 #5
SELECT navn,adresse,postnr,butik FROM tblnavn WHERE postnr NOT like '8000' AND butik NOT like 'spar'

havde lige ikke set det med spar! :)
Avatar billede boomshanka Nybegynder
03. juni 2004 - 14:33 #6
hm...det går hurtigt med svarene her :-)
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 14:34 #7
Det er vel heller ikke verdens sværeste opgave ;-)
Avatar billede pnr Nybegynder
03. juni 2004 - 14:41 #8
På den måde får jeg da slet ingen butikker det ligger i postnr 8000
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 14:46 #9
ikke forstået....

I min løsning får du kun sorteret de butikker fra der ligger i 8000 og hedder spar
Avatar billede boomshanka Nybegynder
03. juni 2004 - 14:47 #10
av ja, det kan jeg godt se... hvad med den her så:

SELECT * FROM <tabelnavn> WHERE NOT IN (SELECT * FROM <tabelnavn> WHERE navn = 'spar' AND postnr = 8000);
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 14:49 #11
forklaring:

postnr != 8000 _and_ butik != 'spar'

AND betyder at BEGGE udsagn skal være rigtige...
OR ville have stoppe alle butikker der enten ligger i 8000 eller hedder spar.
XOR (hvis den findes) ville betyde at man sorterer de butikker fra der ligger i 8000 og som ikke hedder spar.  plus man fjerne dem der hedder spar og som ikke ligger i 8000 (Exclusive OR, kun et af udsagnene må være korrekt)
Avatar billede pnr Nybegynder
03. juni 2004 - 15:03 #12
Jeg fatter ikke rigtig hvad der sker!

Men skriver jeg: postnr <> 8000 OR butik <> 'spar'

får jeg det rigtige resultat
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 15:04 #13
Du har lige nøjagtigt vendt min løsning om...
Avatar billede boomshanka Nybegynder
03. juni 2004 - 15:04 #14
enig wizaxjb - det kommer vel også an på hvilken database tabellerne ligger i, men hvis XOR ikke findes så prøv min løsning pnr - den skulle gerne virke i de fleste DBMS'er.
Avatar billede boomshanka Nybegynder
03. juni 2004 - 15:08 #15
hm...hvad så med andre butikker som har postnummeret 8000? De bliver vel heller ikke vist pga. postnr <> 8000?
Avatar billede boomshanka Nybegynder
03. juni 2004 - 15:09 #16
Altså hvis du har en Føtex med postnummeret 8000 bliver den heller ikke vist, og det var vel ikke meningen?
Avatar billede pnr Nybegynder
03. juni 2004 - 15:21 #17
Føtex med postnr 8000 skal vises.
Avatar billede boomshanka Nybegynder
03. juni 2004 - 15:28 #18
Det lurede jeg også. Den SQL-sætning du sender afsted:

SELECT * FROM <tabelnavn> WHERE postnr <> 8000 OR butik <> 'spar';

vil ganske vist ikke vise spar-butikker, men den vil heller ikke vise andre butikker med postnummeret 8000. Har du prøvet den her:

SELECT * FROM <tabelnavn> WHERE NOT IN (SELECT * FROM <tabelnavn> WHERE navn = 'spar' AND postnr = 8000);

Starter du med at læse den indefra finder den først alle spar-butikker med postnummeret 8000. Derefter finder den alle butikker, som IKKE passer til førnævnte rækker af forretninger.
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 15:29 #19
boom: den giver en syntax error ved "NOT IN"... ca
Avatar billede pnr Nybegynder
03. juni 2004 - 15:37 #20
Den her sql retunere det rigtigte, jeg gad bare godt vide hvorfor.

SELECT * FROM <tabelnavn> WHERE postnr <> 8000 OR butik <> 'spar';
Avatar billede boomshanka Nybegynder
03. juni 2004 - 15:44 #21
Har du prøvet at oprette en ny butik (f.eks. Føtex) med postnummeret 8000 og se om den kommer med?
Avatar billede wizaxjb Nybegynder
03. juni 2004 - 15:44 #22
det gør den, da man checker på først, er postnr <> 8000 og bagefter butik <> spar..

Case:

Postnr butik  Ønsket      Resultat
7000  Føtex  Med        Med
8000  Føtex  Med        Med, da den overholder 2. udsagn.
7000  Spar    Med        Med, da den overholder 1. udsagn.
8000  Spar    Ikke med    Ikke med, da den hverken over holder 1. eller 2. udsagn.
Avatar billede pnr Nybegynder
07. juni 2004 - 08:38 #23
I skal alle have mange tak for at hjælpe her!!

boomshanka: smid et svar så du også kan få del i point'ne
Avatar billede boomshanka Nybegynder
08. juni 2004 - 13:00 #24
Det er okay - wizaxjb kom med løsningen så det er fuld fortjent :-)
Avatar billede pnr Nybegynder
29. juni 2004 - 13:47 #25
Hov den her havde jeg glemt, beklager!
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
Computerworld tilbyder specialiserede kurser i database-management

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