2014-11-08 3 views
0

에 이름과 값을 변환 I가 다음 두 테이블 :MySQL은 - 열

매개 변수 테이블 : ID, EntityType, ParamName, ParamType

엔티티 테이블 : ID, Type, Name, ParamID, StringValue, NumberValue, DateValue

  • 엔티티. ParamIDParameters.ID
  • 엔티티에 링크됩니다. Type은 매개 변수에 연결됩니다.

    Entity.ID, Entity.Name, Parameters.ParamName1, Parameters.ParamName2... Parameters.ParamNameX 
    

    ParamNameX의 함량이 상기 상관 같다 : EntityType

  • StringValue, NumberValueDateValueParameters.Type (1,2,3)에 기초하여 데이터

질의 결과에 포함 할를 포함한다. 매개 변수 이름을 열과 해당 값을 해당 열의 데이터로 변환하는 것이 어떻게 가능합니까? 나는 어디서부터 시작해야할지 모른다.

위의 설명 : 예를 들어 엔티티 X는 엔티티 유형 1과 엔티티 유형 2 일 수 있습니다. parameters 테이블에는 유형 1과 2 모두에 대한 paramname이 들어 있지만 엔티티 유형 1의 paramname 만 가져야합니다 (예 :).

+0

동적 피벗이 필요합니다. http://stackoverflow.com/questions/12630128/mysql-dynamic-pivot – Multisync

+0

제 질문에 대한 추가 정보를 읽으십시오. 내 필요가 조금 다르며 잃어버린 ... – Amos

+0

두 테이블을 조인하고 모든 필수 매개 변수를 포함하는 행을 검색하는 것은 문제가되지 않습니다. 그러나 행을 열로 변환해야하며 열의 수를 알 수 없습니다. 동적 피벗이라고합니다. – Multisync

답변

0

보관하려는 항목은 EAV (Entity Attribute Value) 모델입니다.

하지만 테이블을 설정하는 방법은 잘못되었습니다.

유형별 테이블이 있어야합니다. 그래서 entity_string, entity_number, entity_date와 id와 create_time, update_time 등과 같은 일반적인 것들을 가지고있는 주 테이블 엔티티.

magento를보고 어떻게 테이블을 설치했는지 살펴보십시오. 이렇게하면 데이터를 요청하고 구성하는 것이 훨씬 쉽습니다.

+0

내 질문을 편집했습니다. 엔티티가 여러 엔티티 유형을 가질 수 있기 때문에 필자가이 방법을 사용한 이유는 모든 엔티티 유형에 대해 사용할 수있는 모든 매개 변수를 매개 변수 테이블에 갖지만 요청 된 엔티티 유형에 대한 관련 매개 변수 만 가져와야하기 때문입니다. – Amos

+0

예를 들어 엔티티 X는 엔티티 유형 1과 엔티티 유형 2 일 수 있습니다. parameters 테이블에는 유형 1과 2 모두에 대한 paramname이 들어 있지만 이제는 엔티티 유형 1의 paramname 만 가져와야합니다. – Amos