兩個澄清:MySQL的呼籲對某些行額外的過濾,僅當其它表填充
- 我要去實際上是在做分頁這一點,因此,最好可以是一個SQL語句。 ..
- 如果這有幫助,我想要做的是:獲取用戶的所有內容,但如果content_criteria表中的內容項具有條件,請檢查該用戶是否在users_criteria表中有條件,否則,內容對於用戶
所以這可能很難解釋。讓我們先從主表:
內容:
| contentIdNum | contentStr | programIdNum |
一塊的內容(不同於用戶)只能與一個程序關聯。 一個典型的記錄就是這樣。兩者都與一個程序的1
| 1 | Zelda | 1 |
| 2 | Mario | 1 |
content_criteria ID相關聯:
| contentIdNum | criteriaIdNum |
一個典型的記錄是這樣的:(這基本上是相關聯的內容與標準表並非所有內容與標準相關聯)
| 1 | 5 |
** user_criteria:**
| userIdNum | criteriaIdNum |
一個典型的記錄會是這樣的:(這基本上是一個將用戶與標準聯繫起來的表格。並非所有內容都與標準相關聯。)注意userIdNum 1具有相同的標準contentIdNum 1個
| 1 | 5 |
** program_users:**
| userIdNum | criteriaIdNum |
典型的記錄會是這樣(用戶1和2與方案1相關聯)
| 1 | 1 |
| 2 | 1 |
所以這裏就是我需要做的:
- 創建一個MySQL調用返回的內容的所有作品,用戶可以訪問
- 默認情況下,用戶可以訪問與他被分配到
- 如果一份內容已經與相關標準的程序相關聯的所有內容它在content_criteria表,隨着user_criteria表中對應的標準,只有用戶可以訪問的內容
- 例如,如果我通過在userIdNum 1,我應該得到的內容
- 兩件如果我通過在userIdNum 2,我只能得到一個內容(contentIdNum爲2的那一個)
很明顯,選擇與用戶程序相匹配的內容很容易(下面是我的)。我試圖找出一種簡單的方法來過濾內容 - 我可以一次完成,還是必須執行第二遍並通過PHP循環訪問內容?
SELECT DISTINCT (c.contentIdNum), c.*
FROM content c , program_users pu
WHERE 1=1
AND pu.userIdNum = 2 AND pu.programIdNum = c.programIdNum
感謝您的提示。不幸的是,這並不能解決問題。當我傳入2時,我沒有得到1的結果,因爲2在user_criteria表中沒有任何數據。如果我通過1,我只得到1項,我應該得到兩個。 – Khuffie
即將建議工會 - 你擊敗了我! –