Avatar billede madiedk Nybegynder
06. juni 2010 - 18:14 Der er 3 kommentarer og
1 løsning

måske except/minus?

Hej

Hvad er den optimale løsning til det her problem:

har 2 forespørgsler. Den ene kommer ud med 3 kolonner:
afdeling; dato; land

den anden kommer ud med
dato; land


Det jeg gerne vil gøre med de 2 er at den tager alle række fra forespørgsel 1 undtagen dem der matcher forspørgsel 2 på kolonne dato og land. Hvordan vil i lave sådan en på den "rigtige" måde.
Avatar billede arne_v Ekspert
06. juni 2010 - 18:48 #1
En løsning må være noget a la:

SELECT q1.*
FROM (...) q1 LEFT JOIN (...) q2 ON q1.dato=q2.dato AND q1.land=q2.land
WHERE q2.dato IS NULL AND q2.land IS NULL
Avatar billede madiedk Nybegynder
06. juni 2010 - 19:03 #2
super, var også det jeg selv kunne komme frem til i mit hoved, prøver det på arbjede i morgen.

Lige for en ordens skyld så i mit spørgsmål var det omvendt nemlig at den skulle tage alle rækker fra query 2 undtagen dem der matcher fra query 1.

Men hvad nu når der i query 1 er flere forskellige afdelinger med samme dato og land, kan den query du har skrevet så lave en række per. afdeling dato og land som der ikke matcher query 2?

Eller vil en left join som du har lavet altid (max) spytte det antal rækker ud der i tabellen til left.
Avatar billede arne_v Ekspert
07. juni 2010 - 01:15 #3
Jeg tror ikke at jeg helt forstår.

Du får de afdeling,land,dato som ikke er i den anden query.

Hvis der er to afdelinger med samme land+sato som ikke er i den anden query får du to rækker.

EFter hvilket kriterie skulle den vælge en af rækkerne?
Avatar billede arne_v Ekspert
04. juli 2010 - 03:24 #4
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
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