2013-03-03 2 views
2

개체를 저장하기 위해 엔티티 속성 값 모델을 사용하는 데이터베이스를 검색하려고합니다. 누군가 아래 질문에 어떤 문제가 있다고 말할 수 있습니까?EAV 구조화 된 데이터 모델에서 엔티티 검색

이 경우 "마이클"이 포함 된 개체를 선택하고 싶습니다.이 개체는 판사이며 스웨덴 또는 프랑스에서 제공됩니다. 데이터베이스를 탐색 할 때 쿼리와 일치하는 개체가 있지만 쿼리를 실행할 때 아무 것도 나오지 않는 것을 볼 수 있습니다. 명령 줄을 통해 쿼리를 실행하므로 응용 프로그램 코드와 관련이 없습니다.

표 구조

object 
+----+------------+ 
| id | name  | 
+----+------------+ 
| 1 | Michael... | 
| 2 | Michael... | 
+----+------------+ 

object_meta 
+--------+---------+-----------+ 
| object | name | value  | 
+--------+---------+-----------+ 
| 1 | type | judge  | 
| 2 | type | judge  | 
+--------+---------------------+ 
+0

을 수 테이블과 object_meta의 일치하는 행의 예를 보여줍니다. – www

+0

나는 지금 tbl 구조를 adde했습니다. – xCander

답변

5

에는 행이 없기 때문에 귀하의 쿼리가 빈 집합을 반환하는 그 b.name='type' AND b.name='country'

이 시도 두 조건을 모두 만족시킬 수 있습니다 가입 : 당신을

SELECT * FROM object a 
    INNER JOIN object_meta b 
    ON a.id = b.object 
WHERE 
    a.name LIKE '%michael%' AND 
    b.name='type' AND b.value='judge' 
    AND EXISTS(SELECT 1 FROM object_meta b1 
       WHERE b1.[object]=b.[object] AND (b1.name='country' AND (b1.value='France' OR b1.value='Sweden')) 

    ) 
ORDER BY a.name DESC 
LIMIT 0, 50; 
관련 문제