これが私のデータベース構造です(簡略化):
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
購読日に基づいて雑誌を 1 つ返すか、まったく返さない必要があります。SQL
週をモジュロ :DATE_FORMAT(day, "%v") % 2
で取得するための がありますが、それだけです。これ以上先に進むことはできません。