3

以下を実行するためのアイデアまたはベストプラクティスを探しています。

私はテーブルを持っています: profile基本情報(id、email、pass、lvl) profile_userが含まれています(pid、name、ageなど) profile_modが含まれています(pid、company_name、moneyなど)が含まれています

ご覧のとおり、2つのテーブルで左結合を実行して全体の情報を取得しますが、結合はすべて属性lvlに基づいています。lvl = 1の場合、profile_userで左結合し、lvl=2はprofile_modで結合を実行します。

私の質問は、レベルを取得するためにすべてのクエリでチェックを実行してから、他の2つのテーブルで左結合を実行したくないということです。そのような場合のベストプラクティスがあるかどうか疑問に思いました。

4

1 に答える 1

3

できるよ:

SELECT    *
FROM      profile a
LEFT JOIN profile_user b ON a.id = b.pid AND a.lvl = 1
LEFT JOIN profile_mod  c ON a.id = c.pid AND a.lvl = 2

の場合、のフィールドの値lvlが入力され、の値はになります。1profile_userprofile_modNULL

同様に、がの場合、のフィールドの値はにlvlなりますが、の値は入力されます。2profile_userNULLprofile_mod

于 2012-07-29T02:32:41.847 に答える