Avatar billede alexander_j Nybegynder
17. juni 2007 - 17:44 Der er 3 kommentarer og
2 løsninger

SQL-sætning med udelukkelse

SELECT tab1.v1 FROM tab1, tab2 WHERE tab1.v1=tab2.v1 AND tab1.v2=2 AND NOT ( tab1.v3=tab2.v3 AND tab1.v4=4 )

Spørgsmålet er om man kan lave et sådan udtryk på en eller anden måde - altså:
Find alle poster som lever op til udtryk 1 og 2, men udeluk de poster som lever op til udtryk 3 og 4.

Kan nogen (en SQL-guru) hjælpe?
Avatar billede straszek Praktikant
17. juni 2007 - 19:39 #1
Sådan:
SELECT tab1.v1 FROM tab1, tab2 WHERE tab1.v1=tab2.v1 AND tab1.v2=2 AND ( tab1.v3!=tab2.v3 AND tab1.v4!=4 )


Brug != - betyder ikke lig med i mysql sammenhæng
Avatar billede nielle Nybegynder
17. juni 2007 - 19:44 #2
Hvis logikken skal bevares er det OR i stedet for AND:

SELECT tab1.v1 FROM tab1, tab2 WHERE tab1.v1=tab2.v1 AND tab1.v2=2 AND ( tab1.v3!=tab2.v3 OR tab1.v4!=4 )
Avatar billede alexander_j Nybegynder
17. juni 2007 - 20:13 #3
Hmm tror ikke helt det er det jeg mener.

1: SELECT tab1.v1 FROM tab1, tab2 WHERE tab1.v1=tab2.v1 AND tab1.v2=2
2: SELECT tab1.v1 FROM tab1, tab2 WHERE tab1.v3=tab2.v3 AND tab1.v4=4

Det jeg egentlig gerne vil er at få udtræk 1's poster minus udtræk 2's poster.

Som jeg ser dit første eksempel, så er parentesen overflødig og i dit andet eksempel bliver det hvis det ene eller andet ikke gør sig gældende i stedet for hvis IKKE det ene og det andet gør sig gældende, hvilket som jeg lige kan gennemskue det ikke er det jeg ønsker (og som forøvrigt ikke giver det ønskede resultat når jeg afprøver det).
Avatar billede alexander_j Nybegynder
17. juni 2007 - 20:14 #4
Hov det var forskellige svarere - men håber I forstår hvad jeg vil alligevel.
Avatar billede alexander_j Nybegynder
17. juni 2007 - 20:43 #5
Hmm fandt en løsning med en subselect - noget i stil med:

SELECT tab1.v1 FROM tab1, tab2 WHERE tab1.v1=tab2.v1 AND tab1.v2=2 AND tab1.v1 NOT IN ( SELECT tab1.v1 FROM tab1,tab2 WHERE tab1.v3=tab2.v3 AND tab1.v4=4 )
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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