0

これが私のデータベース構造です(簡略化):

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で取得するための がありますが、それだけです。これ以上先に進むことはできません。

4

1 に答える 1

1

はしごのような場合のユースケース

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

クエリで

于 2013-10-16T13:33:34.440 に答える