webForumDet fria alternativet

WHERE IF Collumn

Databaser & SQL

10 svar · 326 visningar · startad av Glitter

Medlem sedan juli 2003465 inlägg
Frågan#1

Går det på något sätt att if:a eller köra en case i en whare sats ex:

SELECT *FROM tabell
WHERE id = '1' AND
IF datum > '2004-05-17' AND datum < '2004-05-20' then
datum > '2004-05-19'
END
ORDER BY ID

Altså när datum är imellan 17 och 20 då skall den hämta datumet 19...

Medlem sedan juni 200032 967 inlägg
#2

Where styr ju bara vilka poster du ska hämta, inte vilka värden du ska hämta. I SELECT kan du bestämma det du frågar efter, men det vore finfint om du kunde upplysa oss om vilken dbms du använder, så vi slipper gissa.

SELECT fält1, fält2, CASE WHEN datum BETWEEN '2004-05-17' AND '2004-05-20' THEN '2004-05-19' ELSE datum END AS datum FROM tabell WHERE... ORDER BY...
Medlem sedan juli 2003465 inlägg
#3

Jag kör SQL 2000 server

men jag skall hämta ut alla datum som är större än 2004-05-19
i mitt ex så skrev jag la lite knasigt men det kan vara fler än ett datum...

Medlem sedan dec. 200012 464 inlägg
#4

Jag fattar ingenting. Kan du exemplifiera med datainnehåll och förväntat resultat?

Medlem sedan juli 2003465 inlägg
#5

Jag vill bara veta om man kan köra en dynamisk WHERE sats:
om datum är imellan '2004-05-17' och '2004-05-20' så vill jag att datum skall vara större än 2004-05-18

ungefär såhär:

bla bla 
WHERE
IF datum BEETWEN '2004-05-17' AND '2004-05-20' THEN
   Datum > '2004-05-18'
END

inputen är oviktig...
det är funktionen jag är ute efter

Medlem sedan dec. 200012 464 inlägg
#6

Jag förstår inte vad som skulle vara dynamiskt. Så vitt jag kan se säger du bara att du inte vill ha värden där datum är 17/5 eller 18/5 dvs

where datum not in ('2004-05-17','2004-05-18')
Medlem sedan juli 2003465 inlägg
#7

om collumen uppfyller vissa kriterier då skall en where sats skapas

SELECT * FROM tabell
IF datum = '2004-05-19' THEN
  where datum = '2004-05-20' AND id = '1'
ELSE
  where id = '1'
END
ORDER BY collumn

Det verkar inte som det går att ifa efter "FROM tabell" och case verkar inte heller fungera om jag inte gör fel...

kanske dåligt exempel med datum ?

Medlem sedan juni 200032 967 inlägg
#8

Jag kan inte för mitt liv förstå vad du är ute efter. Strunta i SQL och försök beskriva vad du vill ha istället.

Medlem sedan juli 2003465 inlägg
#9

okey tänk en if sats i mitten av en where
om en collumn uppfyller ett kriteria i detta fallet 2004-05-19 så skall ett annat kriteria upfyllas 2004-05-20 och inte det andra som man kollade med altså 2004-05-19

altså
if bla = 'aa' then
aaaa = 'cc'
end

hoppas ni förstår

Medlem sedan juni 200032 967 inlägg
#10
WHERE (villkor1 and villkor2) OR villkor3

Eller :q

Medlem sedan juli 2003465 inlägg
#11

om villkor 1 & 2 uppfylls så skall villkor 3 uppfyllas i frågan men villkor 1 & 2 skall inte påverka resultatet

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)