2014-09-16 1 views
0

영화, TV 시리즈, 도서, 게임과 같은 다양한 미디어 유형을 보유 할 수있는 미디어 목록을 만들고 싶습니다. 각 유형마다 다른 속성이 첨부 될 수 있습니다.미디어 목록에 대한 속성 정의 및 한 행에있는 값 반환

는 지금은 다음과 같은 테이블이 있습니다

categories 

catid | name 
1  | Books 
2  | Movies 
3  | Tv Series 

media 

mid  | title   | catid 
1  | Book 1  | 1 
2  | Movie 1  | 2 
3  | TV Series 1 | 3 
4  | Book 2  | 1 
5  | Movie 2  | 2 

attributes 

attrid | catid | name 
1  | 1  | number of pages 
2  | 1  | description 
3  | 1  | year 
4  | 2  | length 
5  | 2  | cast 
6  | 2  | description 
7  | 3  | cast 
8  | 3  | description 
9  | 3  | year 
10  | 3  | number of episodes 

attribute_info 

attraid | mid | attrid | value 
1  | 1  | 1   | 213 
2  | 1  | 2   | Description... 
3  | 1  | 3   | 1996 
4  | 2  | 4   | 210 minutes 
5  | 2  | 5   | Actor1, Actor2 
6  | 2  | 6   | Description... 
7  | 3  | 7   | Actor3, Actor4 
8  | 3  | 8   | Description... 
9  | 3  | 9   | 2010 
10  | 3  | 10  | 12 

categories는 서로 다른 유형의 미디어에 대한 정보를 보유하고 있습니다. media은 개별 미디어 항목에 대한 정보를 보유하고 있으며 attributes은 카테고리마다 다른 속성을 정의하고 attribute_info은 정보 자체를 보유합니다.

는 지금은 SQL 이상적으로 내가 할 수있는 그룹 미디어 속성이이 작업을 수행하는

Array([mid] => 1, [title] => Book 1, [catid] => 1, [name] => Books, [number of pages] => 213, [description] => Description..., [year] => 1996) 

방법 같은 것을 하나의 출력 행으로이 얻을 모든 정보가해야을 통해 정보를 가져 오기 위해 효율적인 방법을 찾고 있어요 내부 조인이지만 범주에 특성을 추가 할 때 PHP 코드를 변경하고 싶지 않습니다. 내 목표를 달성하는 방법은 SQL의 우아함은 무엇입니까?

답변

0

두 개의 검색어를 만드는 것이 더 쉽습니다. 하나는 카테고리와 제목을 얻고 다른 하나는 해당 속성에 대한 모든 속성 - 속성 _ 정보 쌍을 가져 오는 것입니다. 그런 다음 두 번째 배열을 첫 번째 배열에 추가하십시오.

물론 속성 중 하나라도 내 제목과 일치하면 문제가 발생합니다. :)