2013-12-10 2 views
0

item_id, property_id 및 value_id (항목과 관련된 속성 값)가 저장된 테이블이 있습니다. , item_002 및 item_003레일 - 필드 값으로 테이블에서 레코드를 가져옵니다

item_id property_id value_id 
-------------------------------- 
001  p_001   aaa  
001  p_002   bbb  
001  p_003   ccc  
002  p_001   zzz  
002  p_002   bbb  
002  p_003   ddd  
003  p_001   yyy  
003  p_002   bbb  
003  p_003   ddd  

그래서 내가 예를 들어, 값 val = [bbb]이 항목을 얻을 싶어요, 그래서 item_001 될 것입니다 : 그것은 다음과 같습니다.
하지만 지금은 값이 val = [bbb, ccc] 인 항목을 원하며 item_001 만됩니다.
그리고 지금은 값이 val = [bbb, ddd] 인 아이템을 얻고 싶습니다. 분명히 item_002와 item_003이 될 것입니다.
val = [aaa,zzz] 일 때 item_001과 item_002가 출력되어야합니다.

어떻게하면됩니까?
간단한 SQL 쿼리가 있다고 생각했지만 올바르게 구성 할 수 없습니다. 내가 테스트하는 전체 시나리오로 mockup 시간이 없어 동안

+0

당신이 혹시 사용 PostgreSQL을에 의해 수행 3,516,

당신은 SQL 쿼리를 볼 수? 왜냐하면 당신은'array_agg' 애그리 게이터를 사용할 수 있기 때문입니다. –

+0

프로젝트가 아직 전개되지 않았기 때문에 솔루션이 플랫폼에 독립적이라면 좋을 것입니다. – Dezl

답변

0

에서이 레일 MySQL은이 작업을 수행 할 수 있습니다

Item Load (0.2ms) SELECT item_id FROM `items` WHERE (value_id IN ('bbb','ccc')) GROUP BY item_id HAVING COUNT(id) >= 2 
+0

그런 생각을했지만,'val = [aaa, zzz]'를 입력하면 어떻게 될까요? item은 같은 속성의 2 개의 값을 가지지 않기 때문에 아무 것도 얻지 못할 것이다. – Dezl

+0

업데이트 전의 대답은 분명하지 않았습니다. 'val = [bbb, ccc]라고 말하면 item_001 만 될 것입니다.'val = [aaa, zzz] '가 전혀 없어야합니다. 그럼 여기서 논리는 무엇입니까? 목록에서 모든 value_id를 가진 item_id 만 가져 오지 않겠습니까? – user2503775

+0

글쎄, 실제로 [아마존] (http://www.amazon.com/Televisions-Video/b/ref=sa_menu_tv?ie=UTF8&node=1266092011)과 같은 콘텐츠 필터링을 만들고 싶지만이 같은 표 구성표가 있습니다. . 심지어 가능할까요? – Dezl

0

, 나는 다음과 같은 일을해야 생각 :

SELECT DISTINCT A.item_id 
FROM table A 
     INNER JOIN table B 
       ON A.item_id = B.item_id 
     INNER JOIN table C 
       ON A.item_id = C.item_id 
WHERE A.value_id = 'bbb' 
     AND B.value_id = 'ccc' 

은 또한 다음 링크가 도움이 될해야합니다
SQL: how to select a single id ("row") that meets multiple criteria from a single column

행운을 빕니다가,

+0

테이블 자체를 조인 할 수 있습니까? 아니면 임시 테이블을 만들어야합니까? – Dezl

+0

예, 테이블 자체를 조인 할 수 있습니다. (임시 테이블이 필요하지 않으므로) 다음 링크는 몇 가지 추가 정보를 제공합니다 : http://stackoverflow.com/questions/9824948/how-to-left-join-or-inner-join-a-table-itself – Seymour

+0

나는 'INNER JOIN'에게 내가 소유하고있는 다른 속성만큼의 테이블을 필요로합니까? – Dezl

관련 문제