7〜8個のテーブルからいくつかの列を選択して、複雑なクエリを実行する必要があります。
そのクエリをプログラミング言語(この場合はPHP-Symfony 1.4 / Propel 1.4)で記述したくはありませんが、開発者向けの非常に単純なselectクエリを持つビューまたはストアドプロシージャを作成します。何がより良いアプローチになるのか混乱しています。
次の形式のクエリが必要です。
SET @PlayerId = 1;
SELECT CASE WHEN mat.player1id = @PlayerId THEN mat.player2id ELSE mat.player1id END as opponent
/*plus many other columns*/
FROM `wzo_matches` as mat /*plus few other tables*/
WHERE (mat.player1id =@PlayerId OR mat.player2id=@PlayerId)
/*plus other join conditions*/
ビューの問題は、SET @PlayerId=xx
ステートメントです。事前にプレーヤーIDはわかりませんが、PHPを介して渡されます。これが見解を除外する理由であることを願っています。そのための回避策はありますか?
その他のオプションはストアドプロシージャになります。それに関する唯一の問題は、クエリごとに新しいビューが作成されるため、DBの操作が非常に重くなることです。
開発者がPHPで上記の複雑なクエリを記述せずに、上記のクエリから必要なデータを取得できるように、誰かが最善のアプローチを提案できますか?(明らかに、SPまたはビューとそこからの単純な選択クエリを介して)