2012-01-31 22 views
1

私は、mysqlデータベースのさまざまなプラットフォームのパラメータを保存する設定システムを使っています。表には、「いくつかのvlaue」Mysql、Doctrine 1.2と複雑な結合クエリ

は、だから私は考え出した結合持っている=これはsettings(id, desc, value), settings_overrides(id, settings_id, value, platform_id), platform (id, platform_key, platform_desc).

私は何を探していますが、すべての設定の値、およびplatofrm_keyがあるオーバーライドからのみこれらの値を取得する方法でありますこれを実現させる最良の方法は不明です。この時点で私が得ることができるのは、platform_key = 'some value'だったすべてのテーブルの値だけです。しかし、それは私が探しているものではありません。何かご意見は?

ありがとうございます。

答えて

0

これを行う方法の1つは、LEFT JOINとCASEステートメントをSELECTに使用することです。例:

select 
    id, 
    desc, 
    case so.value when NULL then s.value else so.value end case as setting_value 
from settings s 
left join settings_overrides so on so.settings_id = s.id and platform_key = 'some value' 
関連する問題