Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to apply IF condition with WHERE CLAUSE in this Query Using MySql

This is my MySQL query and I have a week problem in this query. I don't know how to apply IF condition with WHERE clause.

Query:

SELECT
*,
IFNULL((SELECT ur.user_rating FROM user_rating ur 
WHERE ur.vid_id = v.id AND ur.user_id = '1000'),'NULL') AS user_rating
FROM videos v
WHERE WEEK(v.video_released_date) = WEEK(NOW())
AND  
v.`is_done` = 1
ORDER BY v.admin_listing ASC; 

I want OR (how do I apply this condition with where clause?)

IF( WEEK(v.video_released_date) = WEEK(NOW()) , WEEK(NOW()) , WEEK(NOW())-1)
=
IF( WEEK(v.video_released_date) = WEEK(NOW()) , WEEK(NOW()) , WEEK(NOW())-1)

Briefing

If video released date has passed and not match with current week then previous week apply

Myself

When I was tried myself like this they return me whole data

SELECT
*,
IFNULL((SELECT ur.user_rating FROM user_rating ur 
WHERE ur.vid_id = v.id AND ur.user_id = '1000'),'NULL') AS user_rating
FROM videos v
WHERE IF(WEEK(v.video_released_date) = WEEK(NOW()),WEEK(NOW()),WEEK(NOW())-1)
= IF(WEEK(v.video_released_date) = WEEK(NOW()),WEEK(NOW()),WEEK(NOW())-1) 
AND  
v.`is_done` = 1
ORDER BY v.admin_listing ASC;

What am I doing wrong in this query?

like image 786
Query Master Avatar asked Nov 29 '25 16:11

Query Master


2 Answers

Try this -

    SELECT *,
           IFNULL((SELECT ur.user_rating FROM user_rating ur 
                   WHERE ur.vid_id = v.id AND ur.user_id = '1000'),'NULL') AS user_rating
    FROM videos v
    WHERE WEEK(v.video_released_date) = IF(WEEK(v.video_released_date) = WEEK(NOW()),WEEK(NOW()),WEEK(NOW())-1) 
    AND  v.is_done = 1
    ORDER BY v.admin_listing ASC;
like image 119
JHS Avatar answered Dec 02 '25 07:12

JHS


Well it looks like you compare x with x through these IF.

x = x is "always" true.

like image 32
Robin Castlin Avatar answered Dec 02 '25 07:12

Robin Castlin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!