Три таблицы, столбцы следующим образом:
A: A_id, B_id, C_id, flag, ...
B: B_id, date, ...
C: C_id, date
Если A.flag равен NULL, то мне нужно, чтобы все строки из A были объединены с B на B_id, у которых B.date в прошлом.
Если A.flag не равен NULL, тогда мне нужно, чтобы все строки из A, соединенные с B на B_id, имели C.date в прошлом, а C соединялся на C_id.
Попытка:
SELECT *
FROM A, B, C
WHERE A.A_id = B.B_id
AND ((A.flag IS NULL AND (NOW() > B.date) OR
(A.flag IS NOT NULL AND (NOW() > C.date) AND C.C_id = A.C_id))
Но мне нужно некоторое условие в строке A.flag is NULL
, чтобы оно не соединялось с каждой строкой из C. Это то, что я не могу решить.
Или есть более простой способсделать это?