最近、ユーザー情報とファイル情報を 2 つの別々のテーブルに格納して、データベースから情報を読み取る PHP/MySQL スクリプトに取り組んでいます。
以下は、テーブルのスキーマです。
表1
UID | Username | PermissionLevel
1 | First | 1
2 | Next | 3
3 | More | 2
表2
FID | Filename | FileLevel | UploadUsername
1 | file.txt | 2 | First
2 | hand.mp4 | 1 | First
3 | 1245.dds | 1 | Next
4 | beta.sql | 3 | More
このメッセージでは、パスワードの列とファイルのタイトル/説明の列を省略しました。これは、私が達成しようとしている結果には関係がないためです。
これまでのところ、このSQLコードを思いつきました
SELECT DISTINCT table2.*,
table1.*
FROM table2 JOIN table2 ON table2.FileLevel <= table1.PermissionLevel
WHERE table2.UploadUsername = table1.Username
ORDER BY FID DESC LIMIT 7
これにより、必要な適切なリストが生成されますが、表示されるコンテンツのレベルはフィルタリングされません。
PermissionLevel が 1 のユーザーは、FileLevel が 1 のファイルのみを表示する必要があります。PermissionLevel が「2」のユーザーは、FileLevel が 2 と 1 の両方のファイルを表示できます。
しかし、現段階では、ファイル/アクセス許可レベルに関係なく、すべての結果を表示したいだけのようです。
私はこの問題で数日間立ち往生しており、これを回避することができないようです. 見落としているかもしれない単純なことかもしれませんが、新鮮な目が私を助けてくれることを願っています.