は私のテーブルである:(3のIDを持つ)mysqlクエリ - 条件文?ここ
files
+----+--------+
| id | name |
+----+--------+
| 2 | file_1 |
| 3 | file_2 |
| 5 | file_3 |
+----+--------+
files_already_viewed
+----+---------+----------+------+
| id | file_id | category | user |
+----+---------+----------+------+
| 1 | 3 | 5 | 1 |
| 2 | 2 | 1 | 1 |
| 3 | 5 | 1 | 1 |
+----+---------+----------+------+
categories_files_join
+--------+---------+
| cat_id | file_id |
+--------+---------+
| 1 | 2 |
| 1 | 5 |
| 5 | 3 |
| 1 | 3 |
+--------+---------+
file_2は、それに関連付けられた2つのカテゴリがあり、それが探してユーザにより一度視聴された5及びCAT_ID 1
をCAT_IDカテゴリ5.
しかし、今、ユーザーがカテゴリ1
下のファイルを探して、私は他のすべてのファイルまで「1」カテゴリの下にfile_2表示されませんクエリを必要とするの下のファイル1時間のカテゴリIDユーザーがすでにfile_2を閲覧していたため、最初に表示されました。基本的には、リストの最後にfile_2を置きます。ここで
は、これまでのところ、私のクエリです:
SELECT name FROM files
WHERE files.id NOT IN (
SELECT file_id FROM files_already_viewed
WHERE user='1')
ORDER BY most_viewed DESC
LIMIT 1
私は最も人気の閲覧ファイルで私の検索を注文します。しかし、他のすべてのファイルがその特定のカテゴリで表示されるまで、カテゴリに関係なく既に表示されているファイルを表示したくありません。
ご協力いただければ幸いです。ありがとう!
回答をいただきありがとうございます。私は試して報告します。 – Tom