2017-03-18 11 views
0

これは私のテーブル構造は、 は、1行のデータを取得するために、キーと値を使用して同じテーブルに参加し

iは

id journal_id  property  prop_key  old_value      value 
405 252    attr   color   1         0 
372 252    attr  updated_at  2017-03-18 03:43:34 UTC  2017-03-18 03:43:34 UTC 
402 252    attr  sprint_id  5         0 
prop_key =「色」のようにそのキー値と同じテーブルを組み合わせることWABTです

このフォームで結果を欲しいです。

id   color  sprint_id   start_date 
372   2   5    2017-03-18 03:43:34 UTC 

私は、次の

select t.id, 
     max(case when a.prop_key='color' then a.value end) attr_val1, 
     max(case when a.prop_key='sprint_id' then a.value end) attr_val2, 
     max(case when a.prop_key='updated_at' then a.value end) attr_val3 
from journal_details t 
left join journal_details a on t.id = a.id 
where t.journal_id=242 
group by t.id 

Select 
    journal_details.id, 
    a1.value as color, 
    a2.value as sprint_id, 
    a3.value as start_date 
from journal_details 
    left join (select * from journal_details where prop_key='color') a1 on journal_details.id=a1.id 
    left join (select * from journal_details where prop_key='sprint_id') a2 on journal_details.id=a2.id 
    left join (select * from journal_details where prop_key='start_date') a3 on journal_details.id=a3.id 
    where journal_details.journal_id=242 

を試してみてくださいしかし、私は満足のいく結果を得るdidnot。

答えて

1

自己結合は必要ありません。

はこれを試してみてください:

select min(id), 
    max(case when prop_key = 'color' then value end) attr_val1, 
    max(case when prop_key = 'sprint_id' then value end) attr_val2, 
    max(case when prop_key = 'updated_at' then value end) attr_val3 
from journal_details 
where journal_id = 242 
+0

しかし、それはこの http://prntscr.com/eldkp5 のように異なる値を持つ5行を与えるが、私はすべての結果 –

+0

@Navjotで1行をしたいです - journal_id列にグループ化しますか?おそらく(id)分ですか?あなたの結果のid列の値は何ですか?あなたの質問では、あなたは予想される成果を372に示しましたが、どこから来たのですか?入力したデータにはそれがありません – GurV

+0

そのIDです。それは可能かもしれません。 質問を更新する –

関連する問題