2016-03-23 14 views
2

SQLではうまくありません。私はstackoverflowでarroundを見たが、何も私のために働くようです。だから、私は助けを求めています。行の最初のフィールドに基づいて1行に2行を取得することは可能ですか?SQL:行の最初のフィールドに基づいて2行を1行に結合します

私はこれをmysqlで行っています。私は例を示します。

これは私の質問です。

SELECT `ps_product_attribute_combination`.`id_product_attribute`,`ps_attribute`.`id_attribute_group`,`ps_attribute_group_lang`.`name`,`ps_product_attribute_combination`.`id_attribute`,`ps_attribute_lang`.`name` 

FROM `ps_product_attribute_combination` 

LEFT JOIN `ps_attribute` 
ON `ps_product_attribute_combination`.`id_attribute`=`ps_attribute`.`id_attribute` 

LEFT JOIN `ps_attribute_lang` 
ON `ps_attribute`.`id_attribute`=`ps_attribute_lang`.`id_attribute` 

LEFT JOIN `ps_attribute_group_lang` 
ON `ps_attribute`.`id_attribute_group`=`ps_attribute_group_lang`.`id_attribute_group` 

WHERE `ps_attribute_lang`.`id_lang`='2' AND `ps_attribute_group_lang`.`id_lang`='2' 

ORDER BY `ps_product_attribute_combination`.`id_product_attribute` ASC, `ps_attribute`.`id_attribute_group` ASC 

このクエリの出力はです。

enter image description here

iは最初のフィールドid_product_attribute = 0に基づいて、ある必要なもの、

(第2の行から最初のフィールドなし)最初の行の端部に第二行から他のすべての情報を置くこと所望の最終結果は、私がこれをachiveするにはどうすればよい

enter image description here

すべきですか?私は学びたい。だから、どんな考えもありがたいです。 おかげさまで、ありがとうございました。

+0

あなたはいくつかのテストデータとsqlfiddleを作成することができますか? –

+0

私は、GROUP_CONCATを使用してコードで返されたリストを扱うことができる、すばやいソリューションを見ることができます。 –

+0

ここのGROUP_CONCATの例http://sqlfiddle.com/#!9/e3ca88/1 –

答えて

1

sqlfiddle

SELECT id_product_attribute, 
     SUBSTRING_INDEX(id_attribute_group,',',1) as id_attribute_group, 
     SUBSTRING_INDEX(name,',',1) as name, 
     SUBSTRING_INDEX(id_attribute,',',1) as id_attribute, 
     SUBSTRING_INDEX(name2,',',1) as name2, 
     SUBSTRING_INDEX(id_attribute_group,',',-1) as id_attribute_group2, 
     SUBSTRING_INDEX(name,',',-1) as name3, 
     SUBSTRING_INDEX(id_attribute,',',-1) as id_attribute2, 
     SUBSTRING_INDEX(name2,',',-1) as name4 
FROM 
(SELECT id_product_attribute, 
     GROUP_CONCAT(id_attribute_group) as id_attribute_group, 
     GROUP_CONCAT(name) as name,GROUP_CONCAT(id_attribute) as id_attribute, 
     GROUP_CONCAT(name2) as name2 
FROM T 
GROUP BY id_product_attribute)T2 
+0

と今問題は、カンマです。私は属性サイズexを持っています。 11,5、次にそれがちょうど5を示します – user2989040

+0

http://sqlfiddle.com/#!9/906aa6/1 – user2989040

+1

これはコンマではないSEPARATORパイプ(|)を使って試してからパイプ(|)http: /sqlfiddle.com/#!9/906aa6/2 –

関連する問題