我有两个数据库,一个有小部件信息,另一个是根据模块的那些小部件的布局。在页面上,我列出了放置这些小部件,如标题,内容,补充工具栏和页脚。还有一个未使用的窗口小部件列表。这就是我遇到问题的地方。
这是我正在使用的mysql:
SELECT *
FROM widgets AS w
LEFT JOIN widget_layouts AS wl
ON w.id = wl.widget_id
WHERE wl.widget_id IS NULL
OR wl.module_id <> '2'
这将显示没有module_id为2的所有窗口小部件。因此,如果我将其中一个窗口小部件放入另一个窗口小部件,它仍将显示在未使用的窗口小部件列表中,因为它也被另一个窗口小部件使用。
这是widget_layouts的表格:
|Module_id | Widget_id | Position | Weight|
-------------------------------------------
|2 |3 |1 |0 |
|1 |9 |3 |3 |
|1 |8 |3 |2 |
|1 |3 |2 |1 |
所以这就是问题:
如何显示模块2未使用或不存在的小部件列表?
编辑:
我将尝试清理我想要做的事情。我想要一个列表来显示列表中没有的小部件和模块2没有使用的小部件,但如果模块2正在使用它,则不显示该小部件。
我有两个列表用于内容,一个用于显示可用的小部件。因此,当我将小部件3从小部件列表拖动到内容列表中时。然后在浏览器刷新时,会显示两个窗口小部件3,一个在内容列表中,另一个在可用列表中。
那么我如何显示数据库中没有的小部件,如果小部件被模块2使用,它就不会显示在可用列表中?
答案 0 :(得分:1)
您可以使用SQL对具有相同值的列进行分组:
SELECT widget_id
FROM widgets AS w
LEFT JOIN widget_layouts AS wl
ON w.id = wl.widget_id
WHERE wl.widget_id IS NULL
OR wl.module_id <> '2'
GROUP BY widget_id