我有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