Gå til innhold

trenger hjelp med SQL spørringer i access


Anbefalte innlegg

Jeg har følgende tabeller:

tblLeverandør(LeverandørNR, Navn, Adresse, PostNr, Epost)

tblVareFraLev(RåvareNr, LeverandørNr, Pris, Leveringstid, Foretrukket)

tblRåvare(RåvareNr, Beskrivelse, Måleenhet, Pris, Lager, Minimumslager)

 

Spørringen skal finne de leverandørene som leverer råvaren med beskrivelse hvetemel og tomat, med råvareNR 1000 og 1004

Jeg kom frem til følgende spørring:

SELECT tblVareFraLev.LeverandørNr, tblLeverandør.Navn, tblRåvare.Beskrivelse

FROM tblLeverandør, tblVareFraLev, tblRåvare

WHERE (((tblVareFraLev.LeverandørNr)=[tblLeverandør].[LeverandørNr]) AND ((tblRåvare.Beskrivelse)="Hvetemel") AND ((tblVareFraLev.RåvareNr)=[tblRåvare].[Råvarenr]))

UNION

SELECT tblVareFraLev.LeverandørNr, tblLeverandør.Navn, tblRåvare.Beskrivelse

FROM tblLeverandør, tblVareFraLev, tblRåvare

WHERE (((tblVareFraLev.LeverandørNr)=[tblLeverandør].[LeverandørNr]) AND ((tblRåvare.Beskrivelse)="Tomat") AND ((tblVareFraLev.RåvareNr)=[tblRåvare].[Råvarenr]))

ORDER BY tblLeverandør.Navn;

 

Problemet er at denne da plukker ut de som har levert bare hvetemel og de som har levert bare tomat også. Jeg skal jo bare ha de som har levert beggedeler. Noen som har forslag til hvordan en kan løse dette?

Lenke til kommentar
Videoannonse
Annonse

Jeg regner med at Access støtter noenlunde standardisert SQL:

SELECT 
 Lev.LeveradørNr, 
 Lev.Navn, 
 Vare.Beskrivelse
FROM tblLeverandør Lev 
 inner join tblVareFraLev vlv 
   on Lev.LeverandørNr = vlv.LeverandørNr
 inner join tblRåvare Vare
   on vlv.RåvareNr = Vare.RåvareNr
WHERE Vare.Beskrivelse in ['Hvetemel','Tomat']
ORDER BY Lev.Navn;

 

Det er to ting som du bør se på, det ene er joins det andre er IN-operatoren. Forøvrig så er koden du skrev drepen i større systemer, da den (spesielt i "dårlige" databaser) vil medføre at du går igjennom alle dataene to ganger, mens det strengt tatt bare er nødvendig med en gjennomgang. En god databaseserver vil kunne se dette og rette opp i "feilen" din, men det er jo bedre å være klar over selv hvordan ting bør gjøres.

Endret av roac
Lenke til kommentar
...en annen ting er bruk av særnorske tegn (æøå) i kolonnenavn og slike ting...

7227794[/snapback]

 

Har ingenting å si i SQL Server. Du kan bruke kinesiske tegn hvis du vil.

7228147[/snapback]

 

Rent teknisk har du helt rett kaffenils. Tenker man litt lenger, noe i hvert fall jeg pleier å gjøre, og ser på standarder og kompatibilitet med andre databaseservere så er æøå (og definitivt kinesiske) ikke å anbefale.

Lenke til kommentar

Rent teknisk har du helt rett kaffenils. Tenker man litt lenger, noe i hvert fall jeg pleier å gjøre, og ser på standarder og kompatibilitet med andre databaseservere så er æøå (og definitivt kinesiske) ikke å anbefale.

/quote]

 

Og hvilke moderne databaseserver er det som ikke støøter unicode? Det er ikke vits i å ta hensyn til gamle dinosaursystemer hvis en ikke må.

 

Selv bruke jeg kun a-z bå både SQL Server objekter og i annen kode, men hvis en skal ta hensyn til at en kanskje en gang må integreres med et system som ikke støtter unicode så er en ute på tynn is. Bl.a. kan må en fjerne all unicode-støtte for selve datainnholdet. Helt uaktuelt hvis ikke prosjektet spesifikt krever det.

Lenke til kommentar
Og hvilke moderne databaseserver er det som ikke støøter unicode? Det er ikke vits i å ta hensyn til gamle dinosaursystemer hvis en ikke må.

 

Selv bruke jeg kun a-z bå både SQL Server objekter og i annen kode, men hvis en skal ta hensyn til at en kanskje en gang må integreres med et system som ikke støtter unicode så er en ute på tynn is. Bl.a. kan må en fjerne all unicode-støtte for selve datainnholdet. Helt uaktuelt hvis ikke prosjektet spesifikt krever det.

7231288[/snapback]

Selv bruker jeg ingen systemer som ikke støtter unicode, men det er nå også slik (dessverre) at man tidvis kommer bort i gamle systemer som man må integrere mot.

 

Men, når det er sagt så ser jeg nå også (uten at jeg vet om jeg er glad for det eller ikke) at også SQL Standarden har løsnet opp på dette området, mao at identifiers skal være i unicode. Så jeg får bare takke for at du fikk meg til å dukke litt ned i den gode gamle SQL standarden igjen :thumbup:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...