2014-07-06 3 views
0

저는 테이블을 표준화하고 하나의 거대한 테이블 대신 3 개의 테이블을 사용하려고합니다. 왜냐하면 모든 사람들이 정상화가 올바른 일이라고 말했기 때문입니다. 그러나 나는 걸림돌을 치고있다. 주제, 측면, 행의 세 가지 테이블이 있습니다.3 테이블을 첫 번째 테이블의 여러 열로 결합하십시오.

TOPICS: 
id | topicname | topicdescription 

ROWS: 
id | topic_id | rowname | rowdescription 

SIDES: 
id | topic_id | sidename | sidedescription 

하나의 주제는 여러 행과 여러면을 가질 수 있습니다.

내가 좋아이 마스터 결과 (또는 무언가 가질 수 있도록 테이블을 조인하고 싶습니다 :

RESULTTABLE: 
topic_id | topicname | topicdescription | rowname0 | rowdescription0 | rowname1 | rowdescription1 | .... | sidename0 | sidedescription0 | sidename1 | sidedescription1 |... 

내가 얼마나 많은 행 또는 측면 각 주제는 사전에해야합니다 모르겠어요, 모든 솔루션 지금까지 stackoverflow에서 본 적이 정확히 얼마나 많은 행과면을 내가 전화를 걸기 전에 내가 알 필요가있다.

이것은 내가 뭘 시도하고 그 결과 내가 원하는 게 아니 었 :

SELECT topics.id, topics.topicname, topics.topicdescription , 
     sides.sidename , sides.sidedescription, rows.rowname , 
     rows.rowdescription 
FROM `topics` 
INNER JOIN sides 
ON sides.topic_id = topics.id 
INNER JOIN rows 
ON rows.topic_id = topics.id WHERE topics.id=1 

이렇게하면 여러 행이있는 표가 생성됩니다 (원하지 않는 표). 여러 표가없는 표가 생성됩니다.

배경 : 저는 mysql 5.5, php 5.4를 사용하고 있습니다.

+0

어떻게 행과 측면 유용한 당 주제의 이름과 설명을 알고있다? –

+0

@ IgnacioVazquez-Abrams 주제가 여러 행과 여러면을 가질 수있는 토론 웹 사이트를위한 데이터베이스를 만들려고합니다. 따라서 데이터는 결국 다음과 같이 보입니다. 1 | 우리가 이것을 논쟁해야할까요? | 이것은 메타 토론이다. 팀 알파 | 팀 알파의 구성원 | 팀 브라보 | 팀 bravo의 일원 | .... | 예 | 주제 지지자들 | 아니요 | 주제 반대자들 | – GK79

+0

아, 알겠습니다. 구조를 평평하게하고 싶습니다. 그래, 그러지 마. –

답변

0

방금 ​​내가 당신의 질문을 어떻게 이해했는지 깨달았습니다.

이 항목은 원하는 결과로 연결되어야 : Can a MySQL query turn rows into columns? 당신이 정말로 피벗 테이블입니다 필요한 것은

: http://en.wikibooks.org/wiki/MySQL/Pivot_table

+0

내 핵심 문제는 "[etc]"라고 쓴 곳에 정확히 무엇을 넣어야 하는지를 알아야한다는 것입니다. 행이나면의 수를 모르는 경우 왼쪽 조인을 수행하면 테이블의 여러 행 (솔루션으로 이어질)이 아닌 동일한 테이블 내의 열이됩니다. – GK79

+0

감사합니다. 나는 그 해결책이 있는지를보기 위해 그 지역을 더 연구 할 것이다. – GK79

+0

아무도 피봇 테이블이 필요하지 않습니다. – Strawberry

관련 문제