我有2個表格,產品和流派.. 在產品表中它包含兩種流派(genre_id和genre_id2)的所有信息,只有第一個一個是必需的,所以第二個可能有NULL值MySql同一表的兩個不同列的不同值
在流派表我都用一個ID可能的流派名稱涉及到產品表的類型ID的TABLE PRODUCTS -------------- id product_name genre_id genre_id2 ------------------------------------------------- 1 product 1 2 2 product2 2 3 product3 1 4 4 product4 3 4 TABLE GENRE ----------- id genre_name ------------------------------------------------- 1 genre1 2 genre2 3 genre3 4 genre4
我想選擇
所有不同的流派,看看我有多少種類的產品
像這樣
RESULT ------ genre_id count ----------------------- 1 2 2 2 3 1 4 2
我有這樣的說法
SELECT DISTINCT p.genre_id AS genre, g.genre_name, COUNT(p.genre_id) AS cnt
FROM products AS p
JOIN genre AS g
ON p.genre_id=g.id
GROUP BY genre_id
ORDER BY cnt DESC
但只適用於genre_id,我不知道如何將genre_id2的這一說法,並補充說,與genre_id一致計數,並列出不同的人
這是幾乎所有的即時尋找,但是這會把我所有的流派都拋到腦後,即使我沒有計數,可以說我是否在類型表中使用了一個類型爲5的類型5,但是我沒有任何類型爲5的產品,我該如何改變該聲明只包括流派編號的重要性? – kastulo 2013-04-25 00:41:19
只需添加'HAVING COUNT(DISTINCT b.ID)+ COUNT(DISTINCT c.ID)> 0'這裏的演示http://www.sqlfiddle.com/#!2/a414e/2 – 2013-04-25 00:46:10
非常感謝!我從來沒有用過HAVING,它非常方便,再次感謝,非常好的結果... – kastulo 2013-04-25 00:49:31