这是我的数据库结构(简化):
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
但就是这样,我不能再进一步了。