このシナリオには、カテゴリ、ボード、権限という 3 つの主要なテーブルがあります。カテゴリとボードのテーブルは一目瞭然です。許可テーブルには、ボード内のスレッドの読み取り、ボード内のスレッドの作成、ボード内のスレッドへの返信、またはボード内のスレッドと投稿のモデレートのいずれかをユーザーに許可するかどうかを決定する行が含まれています。表では、各アクションに対するユーザーの能力は、0 (オフ、または false) または 1 (オン、または true) で示されます。これらは、ユーザーが所属するメンバー グループに基づいています。
私がやりたいのは、カテゴリを選択するクエリを作成することです。ユーザーが読むことができるボードを持つカテゴリのみを選択する必要があります。基本的に、ユーザーが読めるボードがないカテゴリは選択されません。ユーザーが読めるボードが 1 つでもカテゴリにあれば、それが選択されます。
次のクエリは、ユーザーが読み取ることができる特定のカテゴリ内のボードを選択することです。上記と同じ原則に基づいています。ユーザーが読めないボードを表示して、ユーザーが既にリンクをクリックした後でそれを見つけてしまうことに何の意味があるでしょうか?
このような複雑なクエリを自分で実際に作成したことがないため、どこから始めればよいかさえわかりません。お役に立てば幸いです。
アップデート
それで、私はそれをやってみることにしました、そしてこれが私が思いついたものです:
$クエリ = "
選択する
b.category_id、b.board_id、b.position、
p.group_id、p.board_id、p.read
FROM forum_boards AS b
INNER JOIN forum_permissions AS p ON (
p.board_id = b.board_id,
p.group_id = 1、
p.read = 1
)
WHERE b.category_id = ".$category_id."
ORDER BY b.position";
これは、ユーザーが読み取ることができる特定のカテゴリ内のボードを取得するためのクエリであることに注意してください。現在、以下のエラーが返されていますが、その理由はわかりません。
オペランドには 1 列を含める必要があります
