-1

特定のユーザーのみがアクセスできるようにする必要がある Web サイトのセクションがあります。アクセス制御のためにこのテーブル構造を考えていました。より良いパフォーマンスを持つ他の方法はありますか?

**Users**
id    |   Name   |   age
39    |   Peter  |   24 
40    |   Alan   |   15


**Sections**
id    |   Name   |   description
1     |  Games   |   flash games
2     |  Bank    |  bank access


**AccessControl**
id   |   user_id   |  section_id
1    |     39      |    1
2    |     39      |    2
3    |     40      |    1

Peter (id: 39) がアクセスできるすべてのセクションを取得するには、SELECT をどのように使用すればよいでしょうか?

ありがとうございました

4

5 に答える 5

1

これを試して:

SELECT * FROM Sections where section_id in (SELECT section_id from AccessControl where user_id=39)
于 2013-06-05T00:25:30.873 に答える
0
SELECT *
FROM access_control
JOIN sections ON sections.id = access_control.section_id
WHERE access_control.user_id =39
于 2013-06-05T00:56:07.977 に答える
0

試してみてはどうですか:

select s.* from Users u, Sections s, AccessControl ac where
u.id = 39 and
u.id = ac.user_id and
ac.section_id = s.id
于 2013-06-05T00:25:36.860 に答える
0

最初の質問です。Stack Overflow は正しい場所ではありません。データベース管理者に適しています。2 番目の質問:

SELECT s.name, s.description, u.name
FROM Sections s, Users u
INNER JOIN AccessControl ac
    ON ( ac.user_id = u.id
        AND ac.section_id = s.id )
WHERE u.id = 39
于 2013-06-05T00:27:31.307 に答える
0

試してみてください:

SELECT *
FROM Sections
JOIN AccessControl ON Sections.id = AccessControl.section_id
JOIN Users ON Users.id = AccessControl.user_id
WHERE Users.id = 39
于 2013-06-05T00:30:48.813 に答える