2013-10-16 61 views
0

这里是我的数据库结构(简体):MySQL的选择,其中列基于IF

Subscriptions (id, day, user_id) 
MagazineEvents(id, magazine_id, subscription_id, ..., is_even_week, is_odd_week) 
Magazine(id, name, ...) 

该杂志能进能出,当WEEK_NUMBER%2 == 0(偶)或== 1(奇数),而且还每周(甚至&单数在1)或从不(即使&奇数在0)。

我要列出每个用户的正确的杂志,所以在这里我做了什么:

SELECT s.* FROM Subscriptions s 
LEFT JOIN MagazineEvents me ON me.subscription_id = s.id 
LEFT JOIN Magazine p ON m.id = me.magazine_id 
WHERE ... 

WHERE就是我卡住了,我需要回到一个或没有杂志根据当天的订阅,我有SQL获取星期模数:DATE_FORMAT(day, "%v") % 2,但就是这样,我不能再走了:s

感谢您的帮助!

回答

1

使用情况下,当梯子 像

CASE when (DATE_FORMAT(day, "%v") % 2) = 0 then 'even' else 'odd' end 

查询

+0

有趣,而不是“甚至”和“奇”,我只是在这里做列检查:'那么is_even_week = 1 ELSE is_odd_week = 1'!完善 –