gpt4 book ai didi

MySQL:选择相关表有空匹配的表记录

转载 作者:行者123 更新时间:2023-11-29 12:46:10 25 4
gpt4 key购买 nike

我有两个包含相关信息的表。 “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'。有人可以帮助我编写一个返回我想要的结果的查询吗?

提前致谢!

最佳答案

您需要一个左外连接(或不在不存在)。您应该学习使用正确、明确的 join 语法——当您遇到此类问题时,这些习惯会对您有所帮助。查询更像是:

SELECT r1.idnr 
FROM RoodCMS_albums r1 LEFT JOIN
RoodCMS_prodQuants r2
ON r1.idnr = r2.prodID
WHERE r1.gepubliceerd = '-1' and r2.ProdId is NULL;

关于MySQL:选择相关表有空匹配的表记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com