2016-07-06 2 views
0

MySQL을, 나는 다음과 같은 테이블이 :MySQL은 특정 행을 연결

id | paramname | paramcategory  | value   | 
---+-------------+-------------------+-----------------+ 
1 | width  | dimensions  | 240    | 
2 | height  | dimensions  | 400    | 
3 | param1  | category1   | some value 1 | 
4 | param2  | category1   | some value 2 | 
5 | param3  | category10  | some value 100 | 
... 

내가 연결된 경우에만 여러 행이있는 테이블을 반환하는 쿼리를하고 싶습니다, 그리고 다른 모든 행이 그대로 유지한다 이 같은 :

paramname  | value  | 
--------------+--------------+ 
width, height | 240 x 400 | 
param1  | some value 1 | 
... 

나는 paramcategory 필요에 따라 합치에 대해 생각하고 있지만, 가능하면/필요, 연결뿐만 아니라 특정 paramname 초 동안 발생할 수 있습니다. 무엇이든지 쉽고 간단합니다.

도움이 필요하십니까?

답변

2

이 문제를 위에서 살펴보면, 'UNION'2 개의 쿼리를 함께 사용해야 할 것입니다. 노조의 첫 번째 부분은 concat'd 결과이고 두 번째 부분은 원래 행입니다. 첫 번째 부분에서는이 테이블에 대한 자체 조인을 수행해야합니다.

concat (a.paramname, b.paramname), concat (a.value, b.value) from table A, 당신이 주변에 노조의 2 개 부품을 교환하는 경우 그 라인을 따라

b.paramcategory a.paramcategory = ....

는 사실, 당신도 원래의 열 이름을하겠습니다 표 B.

+0

감사합니다. johnny, 다음과 같은 내용이 없습니다. 당신의 질의는 아마도 모든 유사한 카테고리를 연결하게 될 것입니다. 내가 어떻게 할까? –

+0

select paramname, tablename의 paramcategory에서 paramcategory! = 'dimensions'UNION을 선택하면 concat_ws (',', a.paramname, b.paramname), concat_ws (',', a.value, b.value) 테이블 a, 테이블 b에서 a.paramname! = b.paramname 및 a.paramcategory = b.paramcategory 및 a.paramcategory = 'dimensions' –

관련 문제