2013-07-05 43 views
1

問題:Python列表 - 用交集和並集問題

我想通過URL構造查詢,生成器。返回是元組列表,參與者和參與者數據。數據庫中存在數百名具有唯一ID的參與者。每個參與者可以有不同的參與者數據。每個事件註冊都會在數據庫中創建一個新的參與者數據,並通過電子郵件與參與者相關聯。

e.g.: include|eventid|is|17||include|eventid|is|13__include|unsubscribed|is|True

我把它分爲AND和OR查詢。
和是

1. include|eventid|is|17||include|eventid|is|13 
2. include|unsubscribed|is|True

OR的

 
From first AND Condition: 
1. include|eventid|is|17 
2. include|eventid|is|13 

結果,語法:

[(participant_id, partidipantdata_id), (participant_id, partidipantdata_id), ...], 
e.g: [(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. participant_id但是得到這個事件的所有unsubs,我所要做的事件#13和賽事#17和unsubs的participantdata_id的的交集。但是這不起作用,因爲每次事件註冊都會創建參與者的新參與者數據。訪問#13和#17的參與者將不會匹配。那就是問題所在!

·問題就來了與AND-查詢(交點處的OR-查詢的結果)。

非常感謝! 克里斯

+0

請提供更多包含123,1240等的示例數據。 –

+0

好的。夠了嗎? – user2543694

回答

1

返回的UID爲匹配每個記錄set。然後,您可以使用set-建立在聯合和相交功能中的對象。

的UID需要爲每一個可能的結果是唯一的。在這種情況下,一個可能的結果是特定的參與者數據,並且它將由(參與者ID,參與者數據ID)唯一標識,因此您可以使用它,這意味着您可以僅返回set而不是list

元組在這裏不是最有效的數據類型,但我不認爲這對你的情況很重要。

+0

這是不行的......因爲例如需要在participantdata IDS退訂。 – user2543694

+0

@ user2543694:它也適用於這種情況。請解釋什麼不清楚,我會改進答案。 –

+0

查詢的最終結果也必須包含參與者數據文件。我在查詢後需要這些信息,而且我無法通過參與者ID獲取此信息。參與者ID可以有多個參與者數據ID ...因此無法獲得希望的參與者數據ID – user2543694