Avatar billede hrc Mester
09. oktober 2007 - 12:42 Der er 9 kommentarer og
1 løsning

En anden måde at lave mange AND efterlyses

Mit program genererer følgende script:

select bolig_ref from BoligAttributRel
  where (1 = 1)
    and (attribut_ref = 1)
    and (attribut_ref = 51)
    and (attribut_ref = 2)
    and (attribut_ref = 11)
    and (attribut_ref = 521)
    and (attribut_ref = 9)
    and (attribut_ref = 4);

Det kan blive til mange AND'er og spørgsmålet er om man gøre det på en anden måde, eventuelt en der minder om IN-operatoren? Pseudoeksempelvis:

select bolig_ref from BoligAttributRel
  where (attribut_ref "ISALL" (1,51,2,11,521,9,4));

Jeg er ret sikker på MSSQL, når den fortolker en eventuel løsning, vil lave det om til mit nuværende script, men kan man koge det voluminøse script ned.
Avatar billede erikjacobsen Ekspert
09. oktober 2007 - 13:02 #1
Hvordan kan have attribut_ref have alle disse værdier på samme tid i en række?
Avatar billede michael_stim Ekspert
09. oktober 2007 - 13:02 #2
AND attrbut_ref IN(1,51,2,11)
Avatar billede michael_stim Ekspert
09. oktober 2007 - 13:04 #3
Mig der tænkte forkert, sorry.
Avatar billede gammelhat Nybegynder
09. oktober 2007 - 13:10 #4
måske where attribut_ref=1=51=2=...

men som erik er inde på, så giver det ikke umiddelbar mening
Avatar billede pidgeot Nybegynder
09. oktober 2007 - 13:16 #5
Jeg vil skyde på han vil have de bolig_ref der opfylder alle attributter.

Utestet, men må være ca. sådan:
SELECT bolig_ref FROM BoligAttributRel WHERE attribut_ref IN (1,51,2,11,...) GROUP BY bolig_ref HAVING COUNT(bolig_ref)=AntalAttributter
Avatar billede hrc Mester
09. oktober 2007 - 13:50 #6
Både Erik og pidgeot har ret. Scriptet er forkert og det utestede script fungerer tilsyneladende helt efter bogen.

Smid et svar Pidgeot (og mange tak).
Avatar billede rif1900 Nybegynder
09. oktober 2007 - 15:02 #7
du kan da ikke lave alle de and's?

attribut_ref kan da ikke både være lig 9 OG 4??
Avatar billede pidgeot Nybegynder
09. oktober 2007 - 15:32 #8
Svaret kommer her :)

rif1900: Det er en mange-til-mange tabel, og hrc vil have alle de boliger der har et bestemt sæt attributter (og evt. flere). Han fik bare ikke formuleret det helt så godt. ;)
Avatar billede hrc Mester
09. oktober 2007 - 16:22 #9
Det var en elegant men samtidig snirklet løsning på opgaven, godt tænkt.
Avatar billede rif1900 Nybegynder
09. oktober 2007 - 18:00 #10
pidgeot: Takker, var da godt nok en smule forvirret hehe :)
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