여러 조건에 일치하는 경우 부모 행을 얻을SQL은 자식 행이 내가 가지고있는 속성 테이블이
property_value
해당 속성.
이제는 property_type
을 DATE
이라고하고 property_type
을 PRICE
이라고합니다. 나는 예상대로 수행하는
PRICE = 50$ OR DATE = 2016-10-02
이 기록을 검색 할 때. 그러나 클라이언트는 PRICE = 50$
이 있고 DATE = 2016-10-02
에 판매 된 레코드를 검색 할 수 있어야합니다. 그래서 본질적으로 나는 자녀의 두
중 하나
(property_type = PRICE AND property_value = 50$) OR (property_type = DATE AND property_value = 2016-10-02)
내가 간단한 방법은 바로 SQL에서 해당 쿼리를 수행하는 것 같아요 충족하는 경우 레코드를 얻어야하고 GROUP
기록을 체크 특성 SUM
경우 = 2
. (0)
나는 사이버 공간을 가로 지르면서 속담 용을 죽이기위한 또 다른 방법이 매번 다른 별칭을 지정하고이 두 가지를 수행하는 두 번 (이 예의 맥락에서) 속성 테이블을 조인한다는 것을 알았다. 이러한 앨리어싱 된 테이블에 대한 쿼리. (1) 그 결과는 크게 기뻤습니다.
(0) 솔루션은 행 중 하나가 거짓으로 판명 된 후에도 조건을 충족하는지 계속 확인하므로 낭비됩니다 (모든 레코드에는 최대 20 개의 속성/값 쌍이있을 수 있으므로 테이블은 거대하게 될 것입니다).
업데이트 : 이제 더 많은 것을 생각해 보았습니다. (1) 동일한 단점이 있고 동일한 행을 두 번 확인했을 것입니다.
(1)은 어떨까요? 이 문제를 해결할 다른 가능성이 있습니까? 비교할 때이 두 가지 솔루션이 모두 얼마나 훌륭한 성능을 발휘합니까?
(예,이 방법으로 속성을 모델링하는 것이 특히 어쨌든 앞으로는 두통이 될 것이라는 것을 알고 있지만 RDBMS는 현재 작업해야하는 것이므로이 솔루션은 현재의 상황에서 유연한 것으로 보입니다 상황)
현재 쿼리를 표시하거나 일부 데이터와 현재 쿼리로 sqlfiddel을 준비하고 완벽한 결과를 얻을 수있는 예상 결과를 제공 할 수 있다면 귀하의 사례를 더 잘 이해하는 데 많은 도움이됩니다. – Alex