Я немного борюсь со следующими отношениями сущностей базы данных:
введите описание изображения здесь
Я хотел бы создать запрос, в котором я получаю все события для пользователя, который является владельцем (item-user_id) или участником (member-user_id)
Я получил вернемся к собственным запросам, потому что их легче опробовать. Но связь "один ко многим" между регистрацией и участником у меня не работает.
Пробовал joins
, sub-queries
в предложении where
и unions
.. но пока ничего не работало . Вот несколько примеров:
Сначала тот, у которого есть объединение ->, но он возвращает не правильный результат
select e.id, e.has_location, e.has_registration, e.parent_id, e.published, e._end, e.start
from event e
inner join item i on e.id = i.id
where i.user_id = 2 and start >= '2020-08-01T00:00:00'
union
select e.id, e.has_location, e.has_registration, e.parent_id, e.published, e._end, e.start
from event e
inner join registration_participants r on r.registration_id = e.id
inner join participant p on r.participants_id = p.id
where p.user_id = 2
and e.has_registration
and p.status != 'CANCELED'
and start >= '2020-08-01T00:00:00'
order by start;
, чем результат с некоторым подзапросом ->, но результат также неверный
select e.id, e.has_location, e.has_registration, e.parent_id,
e.published, e.start, e._end from event e
inner join item i on e.id = i.id where i.user_id = 2 or (select p.user_id
from participant p
inner join registration_participants r on e.id = r.registration_id
where r.participants_id = p.id
and p.status != 'CANCELED'
) = 2 order by e.start