Avatar billede MSR Juniormester
14. marts 2009 - 15:32 Der er 7 kommentarer og
1 løsning

Hjælp til query value = '*'

Hej
Er det muligt at lave en ...WHERE value = $variabel i en query?
Jeg laver en select der henter $variabel til forskellige værdier og det virker fint men når man ikke vælger noget skal $variabel ikke begrænse min query. altså findes der en "alt" a la  '*' til at bruge der?

$variabel er f.eks.
Ole, hans, jens, alle.

Alle skulle gerne hente alle og ikke være begrænset til en af de 3.

Håber det giver mening?
Magnus
Avatar billede arne_v Ekspert
14. marts 2009 - 17:31 #1
Når du vil have alle kan du helt undlade WHERE betingelsen.

Nogle gange er det mere praktisk med.

... WHERE felt = ISNULL(@param,felt)
Avatar billede MSR Juniormester
14. marts 2009 - 17:47 #2
hmmm det kunne naturligvis være en løsning. jeg har dog valgt at have mange variabler således WHERE (nr1 = $variabel1 && nr2 = $variabel2 osv osv) hvilket gør det faktisk umuligt at undlade WHERE sætningen.
alt. kunne jeg lave hver enkelt sætning til hver sin WHERE sætning men det virker sgu også som overkill...

isnull betyder "feltet er tomt" ? prøv lige at skriv sætningen med ovenstående parametre.

WHERE (nr1 = ISNULL($????) && nr2 = ISNULL($????))
Avatar billede arne_v Ekspert
14. marts 2009 - 18:31 #3
hvis det er PHP så bruger man ? som marker fremfor @xx

WHERE (nr1 = ISNULL(?,nr1) && nr2 = ISNULL(?,nr2))
Avatar billede MSR Juniormester
14. marts 2009 - 18:31 #4
rent faktisk ser min kode således ud:

$genstand=$_POST["genstand"];
IF ($genstand == "ALLE") {
        $genstand2 = "genstand = 'ISNULL()'";
        } ELSE {
        $genstand2 = "genstand = '$genstand'";
        };

(på samme måde er der $skaffer2 og $ansvarlig2)

senere kommer så:
$soeg = "WHERE (" . $genstand2 . " && " . $skaffer2 . " && " . $ansvarlig2 . ")";

Hvordan siger du jeg kan lave den? ISNULL er noget jeg lige har sat ind velvidende at det ikke skal så sådan ud?

Magnus
Avatar billede arne_v Ekspert
14. marts 2009 - 19:18 #5
Mit forslag forudsatte brug af prepared statement/parameters.

Hvis du alligevel bruger dynamisk SQL, så kan du lige så godt bare undlade den betingelse.
Avatar billede MSR Juniormester
14. marts 2009 - 19:23 #6
Det kender jeg ikke? undskyld hvis jeg spørger om noget jeg ikke engang selv forstår men siger du at jeg helt skal udelade sætningerne hvis resultatet er NULL? det ville være det nemmeste?
Avatar billede arne_v Ekspert
14. marts 2009 - 20:16 #7
Jeg siger at hvis der er valgt ALLE og du bruger dynamisk SQL ås kan du ligeså godt undlade at teste på det pågældende felt.
Avatar billede MSR Juniormester
20. august 2010 - 19:13 #8
lukket
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





White paper
Optimering af Source-to-Pay: Identificér oplagte gevinster og skær omkostninger