SQL statement IF
Ik wil graag iets uit de database selecteren die een waarde true of false mee krijgt (of iets in die geest).
Wanneer de datum in de database kleiner is dan 2 dagen dan moet er een bepaalde waarde true krijgen anders false.
Nu had ik zoiets als dit:
'SELECT IF(datum < NOW() DATE_ADD(datum, INTERVAL 2 DAY)) AS FROM table'
Maar ik kom er niet uit. Kan iemand me helpen?
Krijg je een error te zien? Sowieso achter AS nog een nickname plaatsen. Je kunt gaan experimenteren in PHPMYADMIN.
Nu is het zo:
SELECT IF(datum < NOW() DATE_ADD(datum, INTERVAL 2 DAY)) AS test FROM wallpapers
Maar ik krijg een error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATE_ADD(datum, INTERVAL 2 DAY)) AS test FROM wallpapers
Moet het niet zijn iets als IF(datum < NOW() + DATE_ADD(datum ...)
Dus ik kom er niet uit.
if($datum < 2)
{
$waarde = true;
}
else
{
$waarde = false;
}
SELECT waarde FROM tabel
Dit moet ik dus ong. vertalen naar sql zodat ik waarde op kan halen. Mogelijk?
HellRazer schreef op 22.07.2009 17:40:
hmm heb het geprobeerd maar geen geluk. Ik probeer op de mysql homepage te komen maar op moment lukt het me niet om die te bereiken zoals vele andere sites vanwege crappy internet hier.
Dus ik kom er niet uit.
if($datum < 2)
{
$waarde = true;
}
else
{
$waarde = false;
}
SELECT waarde FROM tabel
Dit moet ik dus ong. vertalen naar sql zodat ik waarde op kan halen. Mogelijk?
Dus ik kom er niet uit.
if($datum < 2)
{
$waarde = true;
}
else
{
$waarde = false;
}
SELECT waarde FROM tabel
Dit moet ik dus ong. vertalen naar sql zodat ik waarde op kan halen. Mogelijk?
SELECT IF(datum < 2, 'true', 'false') AS waarde FROM tabel
Dat is je voorbeeld behoorlijk letterlijk vertaald, maar nu zou het niet echt moeilijk meet moeten zijn om het te krijgen zoals jij het wilt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<? $qHomePage = "
SELECT
bedrijven.bedrijfsnaam,
bedrijven.bedrijf_id,
CASE WHEN betalingen.afloopdatum > NOW()
THEN 1
ELSE 0
END AS geldig
FROM
betalingen
INNER JOIN
bedrijven
ON bedrijven.bedrijf_id = betalingen.bedrijf_id
INNER JOIN
producten
ON producten.id = betalingen.product_id
WHERE
producten.naam = 'homepage'";
?>
SELECT
bedrijven.bedrijfsnaam,
bedrijven.bedrijf_id,
CASE WHEN betalingen.afloopdatum > NOW()
THEN 1
ELSE 0
END AS geldig
FROM
betalingen
INNER JOIN
bedrijven
ON bedrijven.bedrijf_id = betalingen.bedrijf_id
INNER JOIN
producten
ON producten.id = betalingen.product_id
WHERE
producten.naam = 'homepage'";
?>
CASE WHEN NOW() < DATE_ADD(W.datum, INTERVAL 2 DAY) THEN 1 ELSE 0 END AS nieuw