2013-07-05 1 views
1

문제점 :파이썬 튜플 목록 - 교차 및 합집합 문제가 발생했습니다.

URL을 통해 Query-Builder를 생성하려고합니다. Return은 참여자 및 참여자 데이터와 함께 튜플 목록입니다. 데이터베이스에는 고유 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 및이 이벤트에서 구독을 취소 한 모든 ParticipantDatas. (결과 : 3 검색어 : 13 번 참가자 및 17 번 참가자 및 시스템에서 일부 이벤트를 미확인 한 참가자).
그래서 17과 13의 participant_id 교차로를 할 수 있습니다. 그러나이 이벤트의 모든 미확인 범을 얻으려면 participantdata_id의 이벤트 # 13과 이벤트 # 17과 미확인 범의 교차점을 수행해야합니다. 그러나 모든 이벤트 등록이 참여자의 새로운 참여자 데이터를 작성하기 때문에 이것은 작동하지 않습니다. # 13과 # 17을 방문한 참가자는 일치하지 않습니다. 그것이 문제이다!

· 문제는 AND- 쿼리 (OR- 쿼리의 결과 교차)와 함께 제공됩니다.

대단히 감사합니다. Chris

+0

123, 1240 등을 포함하는 몇 가지 샘플 데이터를 제공해주십시오. –

+0

좋습니다. 충분한가? – user2543694

답변

1

일치하는 각 레코드에 대해 UID의 set을 반환하십시오. 그런 다음 set -objects를 조합 및 교차 함수로 빌드 할 수 있습니다.

UID는 가능한 모든 결과에 대해 고유해야합니다. 이 경우 하나의 가능한 결과는 특정 참여자 데이터이며 참가자 ID, 참여자 데이터 ID별로 고유하게 식별 될 수 있으므로이를 사용하면 list 대신 set을 반환 할 수 있습니다.

튜플은 여기에서 가장 효율적인 데이터 유형이 아니지만 귀하의 사례에 대해 중요하지 않다고 생각합니다.

+0

이것은 작동하지 않습니다 ... 예를 들어 참여자 ID가 필요하기 때문입니다. – user2543694

+0

@ user2543694 :이 경우에도 잘 작동합니다. 무엇이 불분명한지 설명해 주시면 답변을 개선하겠습니다. –

+0

쿼리의 최종 결과에는 participantdataids도 포함되어야합니다. 나는 쿼리 후이 정보가 필요하고 나는 참가자 ID로 이것을 얻을 수 없다. 참여자 ID는 둘 이상의 participantdata ID를 가질 수 있습니다. 따라서 희망 파티 데이터 ID를 얻을 수 없습니다. – user2543694