我有一个产品条目数据库。每个产品条目可以与多个类别相关联。我创建了一个关联表来创建这些关联。我要做的是创建一个MySQL查询,它将返回当前未分配给该条目的所有类别。
因此,如果一个条目是一个Pool Table并且它已经被分配到游戏类别,我想创建一个返回除Gaming之外的所有类别的查询。
以下是我的数据库的表结构。任何帮助将不胜感激。
条目表:
+--------------+------------------+
| Field | Type |
+--------------+------------------+
| eid | int(10) unsigned |
| entry_name | varchar(50) |
+--------------+------------------+
类别表:
+----------------+------------------------+
| Field | Type |
+----------------+------------------------+
| cid | smallint(11) unsigned |
| cat_name | varchar(30) |
+----------------+------------------------+
协会表:
+-------+-----------------------+
| Field | Type |
+-------+-----------------------+
| eid | int(10) unsigned |
| cid | smallint(11) unsigned |
+-------+-----------------------+
答案 0 :(得分:1)
SELECT c.cid, c.cat_name
FROM Category c
where not exists (
select 1
from Association a
where a.cid = c.cid
)
答案 1 :(得分:1)
我能够通过nick rulez提示来解决这个问题。
此查询返回尚未分配给特定条目的类别。在此示例中,条目id为493:
select c.* from category c left join Association a on a.pid = c.pid and a.eid = '493' where a.eid is NULL
不确定这是否是最有效的方法,但确实有效。