我希望能夠根據兩個「類別」從「文章」表中獲取行,但是我遇到了連接問題。這裏是我的表會是什麼樣子:MySQL加入兩行
`articles` ( `article_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `article_name` varchar(255) NOT NULL PRIMARY KEY (`article_id`) )
`article_categories` ( `article_id` smallint(5) unsigned NOT NULL, `category_id` smallint(5) unsigned NOT NULL UNIQUE KEY `article_category_id` (`article_id`,`category_id`), KEY `article_id` (`article_id`), KEY `category_id` (`category_id`) )
現在我希望能夠做的就是讓它們在兩個類別3和5(或類別的數量不受限制)的所有文章。我想我可以做這樣的事情:
SELECT * FROM articles a INNER JOIN article_categories ac ON ac.article_id = a.article_id WHERE (ac.category_id = 3 AND ac.category_id = 5)
只是爲了澄清,我不希望出現這種情況是在3或5篇文章,但兩者3和5
我在想,這是其中一件非常簡單的事情,我由於疲倦或某事而錯過了某些東西。
如果不是這樣,我會從字面上做另外加入的,我想包括e.g每個類別:
SELECT a.* FROM articles a INNER JOIN article_categories ac ON ac.article_id = a.article_id INNER JOIN article_categories ac2 ON ac2.article_id = a.article_id WHERE (ac2.category_id = 3 AND ac.category_id = 5)
但我敢肯定有一個簡單的解決方案,這一點。
所以同我在底部的例子嗎?我只是假設可能有更好的解決方案,例如,如果我希望使用10個類別,則需要10個連接。 – robjbrain 2010-11-15 12:20:00
從article_id中選擇* from(article_id from article_categories where category_id in(3,5,7,9,11)) – Jarek 2010-11-15 12:28:51