mysql查询对象未分类给用户

时间:2010-05-11 22:46:29

标签: mysql

我有一个具有属性的用户 User.id

我有一个对象 Object.id, Object.name

我有一个类别 Category.id, 分类名称, Category.user_id

我有一个关联表 category_id,object_id

用户HABTM对象

对象HABTM用户

类别属于1个用户

如何编写查询以返回所有对象的列表用户是否已将用户指定的类别分配给?请记住,另一个用户可能已将同一个对象分配给他们自己的类别。

1 个答案:

答案 0 :(得分:2)

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;

注意:我没有对此进行测试,您可以根据自己可能使用的ORM调整此语法。