Versio

IF-statement in SQL om conditities te bepalen

Overzicht Reageren

Eddy Erkelens

Eddy Erkelens

05/05/2009 11:57:00
Quote Anchor link
Onderstaande query wil ik gaan gebruiken om bijlages in een bepaald topic uit een phpbb3-forum te trekken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    SELECT
        a.attach_id,
        u.username,
        a.poster_id,
        a.attach_comment,
        a.download_count,
        a.extension,
        a.physical_filename,
        FROM_UNIXTIME( p.post_time ) AS datum
    FROM phpbb_attachments AS a
    LEFT JOIN phpbb_posts AS p
        ON ( a.post_msg_id = p.post_id )
    LEFT JOIN phpbb_users AS u
        ON ( a.poster_id = u.user_id )
    WHERE
        a.topic_id = 98
    
    IF(
            MONTH(NOW()) = 1
            ,
                AND
                    YEAR(FROM_UNIXTIME(p.post_time)) = YEAR(NOW())
                AND
                    MONTH(FROM_UNIXTIME(p.post_time)) = MONTH(DATE_ADD(NOW(), INTERVAL -1 MONTH))
            ,
            AND
                YEAR(FROM_UNIXTIME(p.post_time)) = YEAR(NOW() - 1)
            AND
                MONTH(FROM_UNIXTIME(p.post_time)) = 12    
            )


Ik krijg netjes een foutmelding: #1064 - 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 'AND YEAR(FROM_UNIXTIME(p.post_time)) = YEAR(NOW()) AND MONTH(FRO' at line 21

Maar dat had ik zelf ook wel kunnen bedenken.
De syntax van het IF-statement is goed:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT IF(MONTH(NOW()) = 1, 'janauri', 'niet januari') AS welke_maand_is_het

Dat geeft het gewenste resultaat.
Nu heb ik bovenstaande code op dezelfde manier opgezet, maar dan met 2 ANDs erin... die moeten gaan werken als condities.
Het stuk VOOR de IF werkt prima (en is uitgebreid getest).


Of weet iemand anders een manier om heel netjes de bijlagen van vorige maand (en niet die van vorig jaar!) te pakken?
Let op dat dit script 1x in de maand wordt gedraaid, namelijk om 0:05 op de eerste dag van de maand.
Ik kan wel met INTERVAL -1 MONTH werken, maar daar moet het jaar nog bij.
En bij janauari/december kom ik dan in de knoei...
Gewijzigd op 01/01/1970 01:00:00 door Eddy Erkelens
 
PHP hulp

PHP hulp

25/05/2012 03:33:10
Gesponsorde koppelingen:
 
Jesper Diovo

Jesper Diovo

05/05/2009 13:16:00
Quote Anchor link
SQL CASE THEN
Kijk daar eens naar.
 



Overzicht Reageren