1

我在这里尝试完成的事情似乎并不太难,在执行过程中我没有看到我做错了什么,但我得到了一些应该从结果集中否定的结果。

我在手机上写这个,所以请原谅我用手写这些东西:

该表称为“请求”,在程序中人们可以注册接受请求。客户端的特定请求是对已经接受请求的用户隐藏。

这是第 22 个问题:一个请求基于另一个表中的特定实体,并且每个基本实体可以发布多个请求。基本上从系统中删除所述实体的重复项,我想一个不错的方法来处理这个问题是有一个新的关联行,称为请求,它包含一个唯一的 id、请求者的帐户 id、实体的实体 id请求基于该特定可用请求行的接受者的帐户 ID 字段。

正如您所看到的,它的解释开始变得有些混乱,但请记住,这是一个相当晚的更改,并且无法在此阶段更改系统。

所以这是我记得最清楚的查询:

SELECT * FROM requests WHERE completed = 0 AND entity_id != ANY (SELECT GROUP_CONCAT(entity_id) WHERE accepted_account_id = '8')

8 是我在系统中的帐户 ID,系统中有 8 个基本实体(全部从同一个帐户发布,7 个),其中 2 个实体有基于它们的请求,第一个有 4 个请求,第二个有 16 个要求。所以 requests 表中有 20 个请求行。作为用户,我已接受系统中两个实体的单个请求。因此,在请求表中的两行上,RequestID 为 1,实体 ID 为 1,Acceptor Account ID 为 8,RequestID 为 5,实体 ID 为 3,Acceptor Account ID 为 8

而所有其他行包含acceptor_account_id 的空字段

我试图简单地从结果集中否定整个 entity_ids,以免弄乱同一个查询中正在进行的分页(我对分离查询不感兴趣,我 150% 肯定这都可以在一个查询)

如果有人有任何问题,请告诉我,因为这很紧急:(

4

1 回答 1

1

SELECT * FROM requests WHERE completed = 0 AND entity_id NOT IN (SELECT entity_id WHERE accepted_account_id = '8' GROUP BY entity_id)

于 2012-09-22T05:21:21.190 回答