VanOrton Skrevet 2. november 2006 Rapporter Del Skrevet 2. november 2006 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
roac Skrevet 4. november 2006 Rapporter Del Skrevet 4. november 2006 (endret) 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 4. november 2006 av roac Lenke til kommentar
Manfred Skrevet 6. november 2006 Rapporter Del Skrevet 6. november 2006 ...en annen ting er bruk av særnorske tegn (æøå) i kolonnenavn og slike ting... Lenke til kommentar
kaffenils Skrevet 6. november 2006 Rapporter Del Skrevet 6. november 2006 ...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. Lenke til kommentar
roac Skrevet 6. november 2006 Rapporter Del Skrevet 6. november 2006 ...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
kaffenils Skrevet 6. november 2006 Rapporter Del Skrevet 6. november 2006 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
roac Skrevet 6. november 2006 Rapporter Del Skrevet 6. november 2006 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 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå