0

複数のユーザー タイプ (ユーザー、管理者、スーパーユーザー) を持つシステム用のデータベースを設計しています。さまざまなユーザー アカウントの種類を処理する複数の方法について調べましたが、共通のフィールドを持つ "user" の単一のテーブルを作成し、"userType" 値を使用して正しいアカウントを指すようにします。追加情報については、対応する表を参照してください。

私を見つめていることの 1 つは、そのユーザーに関するより具体的なデータが必要な場合は、userType に基づいて 2 番目のクエリを実行する必要があるということです。より具体的なユーザー情報を最初に取得することはできないようです。

userType (タイプ = 1 -> ユーザー テーブルに移動、タイプ = 2 -> 管理テーブルに移動) に基づいて何らかのケース ロジックを実行し、データベースに再度アクセスする必要があります。ここで何かを見落としていますか?

ありがとう!

4

2 に答える 2

0

複数のテーブルを使用する必要がある場合は、select で UNION を使用するか、それぞれを最初のテーブルに結合し、if ステートメントを使用して表示する列を選択して、1 つのクエリですべてを表示できます。

于 2012-07-19T14:00:04.387 に答える
0

個人的には、この問題の最も論理的な解決策は次のようにすることだと思います。

SELECT *
FROM user
LEFT JOIN admin ON admin.user_id = user.user_id AND user.type = 'admin'
LEFT JOIN superuser ON superuser.user_id = user.user_id AND user.type = 'superuser'

NULL管理者/スーパーユーザーではないユーザーと、そうであるユーザーの行を取得します。すべてのケースで余分なフィールドが必要ない場合は、単純にクエリから除外する必要があります (ただし、フィールドを選択しない場合、Postgres などの一部のデータベースは自動的にこれを行います)。

于 2012-07-19T16:25:46.120 に答える