這裏是我的表: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(其具有3的ID)具有與其相關聯的兩個類別,CAT_ID 5和CAT_ID 1.
已經由用戶搜索一次瀏覽類別5
但現在的用戶種類1
我需要一個查詢,將不顯示file_2下的「1」的類別,直到所有與其他文件下搜索文件下的文件類別ID爲1小時因爲用戶已經查看過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 2012-02-06 13:57:33