Avatar billede dkkarpen Nybegynder
11. december 2000 - 18:28 Der er 10 kommentarer og
1 løsning

Tricky sql

Halløj

Hvordan får jeg denne sql til OR som kriterie på driftsform?

select * from boliger where ( amt = \'Ringkøbing Amt\') AND ( kontantpris <= 9000000) AND ( boligareal >= 1) AND ( boligareal <= 400) AND ( grundareal >= 1) AND ( grundareal <= 100) AND (( driftsform = \'Kvægavl\') or ( driftsform = \' Svindeavl\') or ( driftsform = \' Planteavl\'))
Avatar billede tdaugaard Nybegynder
11. december 2000 - 18:29 #1
den fatter jeg ikke !?
Avatar billede dkkarpen Nybegynder
11. december 2000 - 18:31 #2
OK

Amt SKAL være Ringkøbing
Kontantprisen SKAL være <= 9000000

osv.

Men driftsformen skal bare opfylde et af 3 kriterier:
- Kvægavl
- Svindeavl
- Planteavl
Avatar billede limemedia Nybegynder
11. december 2000 - 18:32 #3
det ser rigtigt ud... prøv at sætte parentes rundt om det hele, virker det ikke ?
Avatar billede tdaugaard Nybegynder
11. december 2000 - 18:34 #4
Nåå.

SELECT * FROM boliger WHERE (amt = \'Ringkøbing Amt\' AND kontantpris <= 9000000 AND boligarea >= 1) AND boligareal <= 400 AND grundareal >= 1 AND grundareal <= 100 AND (driftsform = \'Kvægavl\' or driftsform = \' Svindeavl\' or driftsform = \' Planteavl\')

prøv den!
lad være med alle de paranteser rundt om hver evaluering

Avatar billede tdaugaard Nybegynder
11. december 2000 - 18:35 #5
Helt korrekt:

SELECT * FROM boliger WHERE (amt = \'Ringkøbing Amt\' AND kontantpris <= 9000000 AND boligarea >= 1) AND boligareal <= 400 AND grundareal >= 1 AND grundareal <= 100 AND (driftsform = \'Kvægavl\' OR driftsform = \' Svindeavl\' OR driftsform = \' Planteavl\')

forøvrigt .. SKAL der være de mellemrum ved \' Svindeavl\' ? forøvrigt staves det Svineavl hvis det er grise..
Avatar billede dkkarpen Nybegynder
11. december 2000 - 18:41 #6
D havde fat i det rigtige tadaugaard Det var mellemrummet mellem pling og værdi der drillede ;-)

Og jo det hedder svineavl....
Avatar billede tdaugaard Nybegynder
11. december 2000 - 18:42 #7
dkkarpen:> ;-) Jeg tænkte nok det var dem der måske var problemet .. men alle paranteserne gør det også sværer for andre at læse dine SQL\'s hvis det enddag bliver aktuelt..
Avatar billede lthrane Nybegynder
11. december 2000 - 21:33 #8
Kan man egentlig ikke skrive or delen:

AND (driftsform = \'Kvægavl\' OR driftsform = \'Svineavl\' OR driftsform = \'Planteavl\')

således:

AND driftsform IN (\'Kvægavl\', \'Svineavl\', \'Plateavl\')

(jeg har ikke adgang til en db på denne maskine - ellers ville jeg bare prøve selv)
Avatar billede tdaugaard Nybegynder
11. december 2000 - 21:34 #9
Det lyder dumt .. måske omvent ...

AND (\'Kvægavl\', \'Svineavl\', \'Plateavl\') IN driftsform
Avatar billede lthrane Nybegynder
11. december 2000 - 21:41 #10
Måske, men jeg mener man f.eks kan skrive:

SELECT kol2, kol3
FROM tabel1
WHERE kol1 IN (SELECT id FROM tabel2 WHERE.....)

altså hvor man spørger på at parameterens værdi findes i een slags liste....jeg har bare aldrig prøvet selv at definere listen endnu.
Avatar billede tdaugaard Nybegynder
11. december 2000 - 21:42 #11
Hmm .. jeg er ikke så hård til nestede SELECT\'s ..
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
Kurser inden for grundlæggende programmering

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