09. december 2009 - 21:18Der er
4 kommentarer og 1 løsning
Problemer med WHERE clause, der skal kunne ignoreres med alder <= IFNULL($alder,alder)
Nedenstående søgestreng symboliserer mit problem:
SELECT * FROM erfaring WHERE alder <= IFNULL($alder,alder)
alder <= IFNULL($alder,alder) bruges til at ignore denne clause hvis $alder er NULL. $alder kommer fra en select-box ($_POST[alder]). Det fungerer altså på den måde, at hvis man ikke vælger en alder i select-boxen, så sættes der ikke nogen begrænsning på alder i søgningen. Det hele har virket perfekt hidtil.
Nu er der imidlertid opstået problemer. Jeg har af andre årsager modificeret min database, så feltet alder har fået ændret sin nulværdi til NULL, hvilket den ikke har været tidligere. Det bevirker, at alle rækker hvori alder = NULL nu ikke længere kommer med ved ovenstående søgning.
Det løser jo ikke mit problem. Jeg får rigtigt nok alle rækker med når jeg får et NULL fra select-boxen, men når nu $alder fx. er 15, så vil jeg jo kun have dem der er <= 15 og ikke også dem for hvem feltet ikke er udfyldt. Jeg forstår slet ikke hvorfra problemet kommer, for hvis der kommer et NULL fra select-boxen, så burde min søgning vel blot svare til
SELECT * FROM erfaring WHERE alder <= alder
eller hvad. Du må jo vide det, for det er dig der rodet mig ud i denne løsning:-)
OK, det virker faktisk. Jeg troede nu ikke det var nødvendigt med så "langhåret" en løsning.
Jeg har ændret i min database fordi jeg har brug for at kunne skelne mellem 0 og NULL. I min database kan man godt være 0 år, men det skal jeg kunne skelne fra de tilfælde hvor der ikke er nogen oplysninger. Jeg troede ikke det ville føre så mange problemer med sig.
Nå, sender du et svar. For øvrigt, tusind tak for hjælpen!!
NULL er beregnet til manglende oplysninger og er lavet netop for at undgaa problemer med at aegte data kan faa en vaerdi, saa du har valgt det rigtige.
Og den query er ikke saa slem igen.
Og et svar.
Synes godt om
Ny brugerNybegynder
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.