好吧我最近進入正常化我的數據庫爲這個我已經創建了一段時間的小項目,但我剛剛撞到一堵磚牆。我會試着給出一個可以理解的例子,說明我有什麼和我需要做什麼 - 並希望它不會太痛苦。好。MySQL高級選擇幫助
我有3代表的第一個,我們將調用顯示,結構是這樣的:
+----+--------------------------+
| id | title |
+----+--------------------------+
| 1 | Example #1 |
| 2 | Example #2 |
| 3 | Example #3 |
+----+--------------------------+
簡單明瞭。
我的下一個表名爲類別,lookes這樣的:
+----+--------------------------+
| id | category |
+----+--------------------------+
| 1 | Comedy |
| 2 | Drama |
| 3 | Action |
+----+--------------------------+
而且最終的表稱爲Show_categories:
+---------+---------+
| show_id | cat_id |
+---------+---------+
| 1 | 1 |
| 1 | 3 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
+---------+---------+
正如你可能已經注意到這個問題是在我的數據庫單演可以有多個類別。一切都結構良好,除了我找不到爲什麼要搜索具有多個類別的節目這一事實。
如果我要搜索動作和喜劇類型的節目,我會給出示例1,但這是不可能的(至少在我的查詢中),因爲Show_categories中的cat_id在不同的行中。工作單分類檢索
例(選擇所有喜劇節目):
SELECT s.id,s.title
FROM Shows s JOIN Show_categories sc ON sc.anid=s.id
WHERE sc.cat_id=1 GROUP BY s.id
和查詢那是不可能的(因爲CAT_ID不能等於2個不同的東西):
SELECT s.id,s.title
FROM Shows s JOIN Show_categories sc ON sc.anid=s.id
WHERE sc.cat_id=1 AND sc.cat_id=2 GROUP BY s.id
所以總結一下我所問的是如何處理一個查詢,我正在尋找基於多個匹配類別的節目。
如果數據庫設置不正確並且在「show_categories」表中允許兩次記錄相同的記錄,則可能會失敗 – cambraca 2010-10-27 01:34:31
@cambraca:否 - 如果有重複的機會,我解釋了COUNT DISTINCT的必要性。 – 2010-10-27 01:35:49
這就是我如何設置的,查詢工作完美。 – ahoka 2010-10-27 01:38:41