eberswine
eberswine

Reputation: 1224

JOIN mysql if else statement

This is an odd conditional statement - and I am not sure if it is possible.

I have a MYSQL QUERY:

SELECT 
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id 
FROM cute_news, cute_fields 
WHERE 
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND 
cute_fields.cf_id = cute_news.cf_id AND 
FIND_IN_SET ('10', cute_news.category) 
ORDER BY cute_news.date DESC

My question is I want :

IF ( cute_fields.cf_id = cute_news.cf_id )THEN
{  SELECT 
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id 
FROM cute_news, cute_fields 
WHERE 
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND 
cute_fields.cf_id = cute_news.cf_id AND 
FIND_IN_SET ('10', cute_news.category) 
ORDER BY cute_news.date DESC }
ELSE {
 SELECT 
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date 
FROM cute_news 
WHERE 
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND 
FIND_IN_SET ('10', cute_news.category) 
ORDER BY cute_news.date DESC }
ORDER BY..

Having the hardest time to actually execute this.. Maybe it isn't possible. Thanks in advance NINJAS!

Upvotes: 0

Views: 52

Answers (1)

Utsav
Utsav

Reputation: 8093

If I understand your requirement clearly, you need Left Join. If will give you NULL for your Else part.

SELECT 
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, 
cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id 
FROM cute_news n
LEFT JOIN 
cute_fields f
ON f.cf_id = n.cf_id
WHERE 
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND 
FIND_IN_SET ('10', cute_news.category) 
ORDER BY cute_news.date DESC

Upvotes: 1

Related Questions