1
두 테이블 사이에 많은 카디널리티가 여러 개있는 2 개의 테이블이 있습니다. 그래서 정상화에 의해 나는 이것을 만들었습니다 :SQL 쿼리에서 Intersect 연산자를 사용하는 대신
User
UserId UserName ....
1 a
2 b
UserObject
UserId ObjectId
1 1
1 2
2 2
Object
ObjectId ObjectName
1 c
2 d
이제 특정 객체를 가진 사용자를 알고 싶은 쿼리를 실행하고 싶습니다.
예 : 개체 c와 d를 모두 가지고있는 모든 사용자. 내 유스 케이스에 따라
Select userid from UserObject where objectid=1 intersect Select userid from UserObject where objectid= 2
을하는
한 가지 방법은, 나는 2-7 개체의 조합을 가진 사용자를 검색 할 수도 있습니다. 너무 많은 교차로를 작성하는 것은 신중하지 않습니다.
나는 postgeql 9.1을 연구 중이다.
이렇게하는 다른 효율적인 방법은 무엇입니까?
thnx : 우리가 사용 할 수도 합류? – codecool
@codecool : 물론입니다. 가입하고자하는 것에 대한 추가 세부 정보를 제공 할 수 있습니까? –
나는 이런 식으로 이야기하고 있었다. http://stackoverflow.com/questions/1878255/select-from-two-same-table-with-intersect/1878315#1878315 하지만이 경우에는 7 개의 조인이 필요하다. 그것은 효율적이지 않을 것입니다. – codecool