/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL 5] Sætte status alt efter dato
Fra : Martin


Dato : 07-05-07 15:08

SELECT

IF
r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
THEN
RETURN "0";
ELSEIF
r.reference_startdate > CURDATE() AND r.reference_enddate < CURDATE()
THEN
RETURN "1";
ELSE
RETURN "2";
END IF;
AS status

FROM
tbl_references AS r


Giver fejlen...

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
'r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
THEN RETUR' at line 3

Det som jeg egentlig gerne vil ende op med er et felt med navnet status.
reference_startdate og reference_enddate er begge af typen DATE

 
 
Michael Zedeler (07-05-2007)
Kommentar
Fra : Michael Zedeler


Dato : 07-05-07 15:56

Martin skrev:
> SELECT
>
> IF
> r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
> THEN
> RETURN "0";
> ELSEIF
> r.reference_startdate > CURDATE() AND r.reference_enddate < CURDATE()
> THEN
> RETURN "1";
> ELSE
> RETURN "2";
> END IF;
> AS status
>
> FROM

Læs syntaksen i manualen:

http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Martin (07-05-2007)
Kommentar
Fra : Martin


Dato : 07-05-07 16:58

Michael Zedeler wrote:
> Martin skrev:
>> SELECT
>>
>> IF
>> r.reference_startdate < CURDATE() AND r.reference_enddate <
>> CURDATE() THEN
>> RETURN "0";
>> ELSEIF
>> r.reference_startdate > CURDATE() AND r.reference_enddate <
>> CURDATE() THEN
>> RETURN "1";
>> ELSE
>> RETURN "2";
>> END IF;
>> AS status
>>
>> FROM
>
> Læs syntaksen i manualen:
>
> http://dev.mysql.com/doc/refman/5.0/en/if-statement.html
>

Det har jeg skam også... og iflg den burde

IF
r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
THEN
0
ELSEIF
r.reference_startdate > CURDATE() AND r.reference_enddate < CURDATE()
THEN
1
ELSE
2
END IF
AS status

Michael Zedeler (07-05-2007)
Kommentar
Fra : Michael Zedeler


Dato : 07-05-07 17:52

Martin skrev:
> Michael Zedeler wrote:
>> Martin skrev:
>>> SELECT
>>>
>>> IF
>>> r.reference_startdate < CURDATE() AND r.reference_enddate <
>>> CURDATE() THEN
>>> RETURN "0";
>>> ELSEIF
>>> r.reference_startdate > CURDATE() AND r.reference_enddate <
>>> CURDATE() THEN
>>> RETURN "1";
>>> ELSE
>>> RETURN "2";
>>> END IF;
>>> AS status
>>>
>>> FROM
>>
>> Læs syntaksen i manualen:
>>
>> http://dev.mysql.com/doc/refman/5.0/en/if-statement.html
>>
>
> Det har jeg skam også... og iflg den burde
>
> IF
> r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
> THEN
> 0
> ELSEIF
> r.reference_startdate > CURDATE() AND r.reference_enddate < CURDATE()
> THEN
> 1
> ELSE
> 2
> END IF
> AS status

Ja. Det er også noget andet end det, du skrev først. Virker den 2.
udgave ovenfor?

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Martin (08-05-2007)
Kommentar
Fra : Martin


Dato : 08-05-07 12:03

Michael Zedeler wrote:
> Ja. Det er også noget andet end det, du skrev først. Virker den 2.
> udgave ovenfor?

Nix...

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
'r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
THEN 0 ' at line 8


SELECT
   r.reference_id AS id,
   r.reference_name AS name,
   UNIX_TIMESTAMP(r.reference_startdate) AS startdate,
   UNIX_TIMESTAMP(r.reference_enddate) AS enddate,
   r.reference_opposite AS opposite,
   r.reference_deleted AS deleted,


IF r.reference_startdate < CURDATE() AND r.reference_enddate < CURDATE()
THEN 0
ELSEIF r.reference_startdate > CURDATE() AND r.reference_enddate <
CURDATE()
THEN 1
ELSE 2
END IF AS status,


   COUNT(i.ref_from_item) AS counts
FROM
   webshop_tbl_item_references AS r,
   webshop_tbl_item_reference_items AS i
WHERE
   (r.reference_id = i.ref_id) AND r.reference_id = '3'
GROUP BY
   r.reference_id
ORDER BY
   reference_startdate

Torben Simonsen (07-05-2007)
Kommentar
Fra : Torben Simonsen


Dato : 07-05-07 17:33

Martin <maaNO@SPAMscandesigns.dk> writes:

> Michael Zedeler wrote:
>> Læs syntaksen i manualen:
>>
>> http://dev.mysql.com/doc/refman/5.0/en/if-statement.html
>>
>
> Det har jeg skam også... og iflg den burde

Nu er jeg ikke nogen haj til MySQL (jeg er mere til Firebird), men det
ser ud til, at MySQL er nogenlunde enig med Firebird med hensyn til
syntaks på dette område.

IF-konstruktionen er noget, man bruger i en stored procedure eller
en trigger. Så vidt jeg kan se, så er du ude efter noget, som kan
bruges direkte i en SELECT. I så fald skal du kigge på CASE i stedet:

SELECT
CASE
WHEN foo < bar THEN 1
WHEN foo > bar THEN 2
ELSE 3
END
FROM blabla

--
-- Torben.

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste