2016-07-19 17 views
2

に単一の行への行を結合します:このクエリを与えながら は、私は2つのクエリのマージに問題を抱えているmysqlの

SELECT f.attribute_name, s.value as htc 
FROM attributes f 
left join `car_type` c on f.type_id=c.id 
left join mode m on m.id = f.mode_id 
left join settings s on f.id=s.attr_id 
where c.id=1 and f.mode_id = 1 

を、私は画像のように

enter image description here

を次の出力を得ました 2番目のクエリのために
SELECT f.attribute_name, s.value as ct 
FROM attributes f 
left join `car_type` c on f.type_id=c.id 
left join mode m on m.id = f.mode_id 
left join settings s on f.id=s.attr_id 
where c.id=2 and f.mode_id = 1 

、私は画像のような出力を得た

enter image description here

両方のクエリで同じ属性名が同じ行にあるctとhtcの値を取得したいとします。

+0

WHEREへのplsはスクリーンショットに – e4c5

+0

の変更を使用していないと。 ANDをWHEREに変更します。 – Strawberry

答えて

2

これは、テーブルのピボットの質問ではなく、それが動作するかどう確かのようですが、それを試してみてください。

SELECT 
    f.attribute_name, 
    MAX(CASE WHEN c.id = 1 THEN s.value ELSE NULL END) AS htc, 
    MAX(CASE WHEN c.id = 2 THEN s.value ELSE NULL END) AS ct 
FROM attributes f 
LEFT JOIN `car_type` c ON f.type_id=c.id 
LEFT JOIN MODE m ON m.id = f.mode_id 
LEFT JOIN settings s ON f.id=s.attr_id 
WHERE c.id IN (1,2) AND f.mode_id = 1 
GROUP BY f.attribute_name 
+0

ありがとうございました@ 10086 – shalin

関連する問題