у меня есть Пользователь с атрибутами User.id
у меня есть объект с Object.id, Object.name
у меня есть категория с Category.id, Category.name, Категорией user_id
у меня есть таблица ассоциации с category_id, object_id
пользователь объекты HABTM
объекты пользователи HABTM
категории принадлежат 1 пользователю
то, как я могу записать, что запрос для возврата списка всего Пользователя объектов имеет того Пользователя, не присвоило категорию? Следует иметь в виду, что другой Пользователь, возможно, присвоил тот же самый объект собственной категории.
SELECT o.*
FROM Objects o
JOIN (
UsersObjects uo JOIN Users u ON (uo.user_id = u.id)
) ON (o.id = uo.object_id)
LEFT OUTER JOIN (
ObjectsCategories oc JOIN Categories c ON (oc.category_id = c.id)
) ON (o.id = oc.object_id AND c.user_id = u.id)
WHERE u.id = :userid AND oc.object_id IS NULL;
NB: Я не тестировал это, и вы должны адаптировать этот синтаксис к любому ORM, который вы можете использовать.