【发布时间】:2014-10-13 18:51:17
【问题描述】:
我有两张包含相关信息的表格。 “RoodCMS_prodQuants”和“RoodCMS_albums”。这些看起来如下:
RoodCMS_prodQuants:
此表为产品数量表。 idnr-prodID 组合是唯一的。 idnr 指的是另一个表中的订单ID,prodID 指的是“RoodCMS_albums”中的idnr
-------------------------------------------------
idnr | prodID | kwantiteit
------------------------------------------------
2 | 2 | 2
3 | 1 | 1
4 | 1 | 2
4 | 2 | 2
5 | 3 | 1
RoodCMS_albums:
出于管理目的,我只删除标记为“待删除”(gepubliceerd = '-1')的记录,并且如果上一个表中不再有与其相关的条目(记录来自 RoodCMS_prodQuants,prodID 为 RoodCMS_albums 中的 idnr)。那是因为我想保留价格、名称等信息,直到包含该产品的最后一个订单被删除。
-------------------------------------------------------------------
idnr | gepubliceerd | ... name, price, quantity-in-stock, etc...
-------------------------------------------------------------------
2 | 1 |
3 | 1 |
4 | -1 | <---- this one is flagged to be deleted
1 | 1 |
在这种情况下,我想选择同一prodID下没有任何对应记录的每条记录的idnr。对于我在此处显示的表格,这意味着 idnr='4' 是要选择的候选者,因为没有 prodID='4' 的记录。
我尝试了几个查询来收集符合我条件的记录。
SELECT r1.idnr
FROM RoodCMS_albums AS r1, RoodCMS_prodQuants AS r2
WHERE r1.gepubliceerd='-1' AND r1.idnr = r2.prodID
GROUP BY r1.idnr HAVING SUM(r1.kwantiteit) = 0
...和:
SELECT r1.idnr
FROM RoodCMS_albums AS r1, RoodCMS_prodQuants AS r2
WHERE r1.gepubliceerd='-1' AND r1.idnr = r2.prodID
GROUP BY r1.idnr HAVING COUNT(r2.prodID) = 0
两者都返回一组空行,而我的目标是从 RoodCMS_albums 中选择 idnr='4'。有人可以帮我写一个返回我想要的结果的查询吗?
提前致谢!
【问题讨论】:
标签: mysql matching multiple-tables not-exists