0

行の列に複数の値を含める方法を知りたいです。この場合、ページ アクセス用にそれらの番号を取得できるように、ユーザーの複数のアクセス番号。

私が今持っているもの:

---------------------------------------------------------------------------------
id  |  first_name  |  last_name  |       email       |  password  |  date  |  access  |
---------------------------------------------------------------------------------
1   |  Test        | User        |  test@website.com | md5pass    | -date- | 2
---------------------------------------------------------------------------------

ユーザーに複数のアクセス コード/変数/整数を提供したいと考えています。

このような:

---------------------------------------------------------------------------------
id  |  first_name  |  last_name  |       email       |  password  |  date  |  access  |
---------------------------------------------------------------------------------
1   |  Test        | User        |  test@website.com | md5pass    | -date- | 2, 201, 3908
---------------------------------------------------------------------------------

これは可能ですか??

そして、それを取得したら、可能であれば、どうすればよいでしょうか?

私は次のようなことを計画しています: ユーザー アクセス コード '201' が存在する場合は、アクセス権を付与してコンテンツを表示します。

4

1 に答える 1

1

あなたが行っている方法はうまくいく可能性があります。accessユーザー行を取得するときに、列を分解してトリムするだけです。

ただし、これを行う正しい方法は、user_access のように別のテーブルを用意することです。最も単純には、次のようになります。

CREATE TABLE user_access (
  user_id int,
  access int
)

このテーブルには、ユーザーごとに、定義されたアクセス コードごとに 1 つの行があります。あなたの例がテーブルでどのように見えるかは次のとおりです。

select * from user_access;
+---------+--------+
| user_id | access |
+---------+--------+
|       1 |      2 |
|       1 |    201 |
|       1 |   3908 |
+---------+--------+

次に、ユーザーを取得し、そのアクセス レベルに関心がある場合は、user_access テーブルに対して結合します。

SELECT u.*, ua.access FROM users u LEFT JOIN user_access ua on u.id = ua.user_id WHERE u.id = <some user id>

(ユーザーにアクセス権が定義されているという保証がないため、左結合)

または、次の 2 つのクエリで実行します。

SELECT * FROM users WHERE id = <some user id>
SELECT access FROM user_access WHERE user_id = <some user id>
于 2013-07-07T03:43:26.283 に答える