1

问题:

我想通过 URL 构造一个 Query-Builder。返回元组列表,包含参与者和参与者数据。在数据库中存在数百个具有唯一 ID 的参与者。每个参与者都可以有各种参与者数据。每次活动注册都会在数据库中创建一个新的参与者数据,通过电子邮件与参与者相关联。

例如:include|eventid|is|17||include|eventid|is|13__include|unsubscribed|is|True

我将它分成 AND 和 OR 查询。
与的

1. include|eventid|is|17||include|eventid|is|13
2. 包含|未订阅|是|真

或的

从第一个 AND 条件开始:
1. 包含|eventid|是|17
2. 包含|eventid|是|13

结果语法:

[(participant_id, partidipantdata_id), (participant_id, partidipantdata_id), ...],
例如:[(123,1240), (123,959), (123,1124), (123,1450), (134, 1670), ( 156,1950), (123,1450), (156,2000), (220,2100), (234, 1754), (156,1121), (278,1556), (281,1671), (278, 1771), (156,2111), (312,2254), (289,967), (278, 2178)]

问题:
· 如何正确组合(联合)OR 查询(participant_id、participantdata_id)?--> 查询各种事件需要participant_id,查询未订阅的各种事件(存储在participantdata中的信息)需要participantdata_id
两者都需要:participant_id和participantdata_id来获得最终结果查询。



问题:
例如查询:事件#17 和事件#13 以及所有已取消订阅此事件的参与者数据。(结果:3 个查询:#13 的参与者以及 #17 的参与者以及所有对系统中的某些事件取消订阅的参与者)。
所以我可以将 17 和 13 的参与者 ID 相交。但是,要获得此事件的所有取消订阅,我必须将事件 #13 的参与者数据 ID 与事件 #17 和取消订阅相交。但这不起作用,因为每次注册事件都会创建参与者的新参与者数据。访问#13 和#17 的参与者将不匹配。那就是问题所在!

· 问题来自与查询(与或查询的结果相交)。

非常感谢!克里斯

4

1 回答 1

1

set为每条匹配的记录返回一个UID。然后,您可以使用set联合和交集函数中内置的 -objects。

对于每个可能的结果,UID 都必须是唯一的。在这种情况下,一个可能的结果是特定的参与者数据,它将由 (participant id, participant data id) 唯一标识,因此您可以使用它,这意味着您可以只返回 aset而不是 a list

元组在这里不是最有效的数据类型,但我认为这对您的情况并不重要。

于 2013-07-05T10:24:21.077 回答