2013-09-23 111 views
0

请看下表。可以说第一个是table1table2另一个。 我真的不知道该怎么做,任何人都可以帮助我如何计算像下面的表与MySQL查询?Mysql计数选定查询

它算你“一”

its count how much red with a type

感谢

+0

你有没有对此做过任何尝试?请包括您的查询,如果您有 – Paddyd

+0

您是否熟悉'GROUP BY'?这可能值得阅读。 –

回答

4

多少“红色”与类型需要使用LEFT JOININNER JOIN因为有一种可能性,即color不会对其他存在表。

SELECT a.id, 
     a.colour, 
     SUM(type = 'a') TypeA, 
     SUM(type = 'b') TypeB 
FROM tableColors a 
     LEFT JOIN tableName b 
      ON a.ncolour = b.colour 
GROUP BY a.id, a.colour 

SUM(type = 'a')是计算来自布尔运算的结果的合计值一个MySQL特定语法。如果你想更RDBMS友好,使用CASE

SELECT a.id, 
     a.colour, 
     SUM(CASE WHEN type = 'a' THEN 1 ELSE 0 END) TypeA, 
     SUM(CASE WHEN type = 'b' THEN 1 ELSE 0 END) TypeB 
FROM tableColors a 
     LEFT JOIN tableName b 
      ON a.ncolour = b.colour 
GROUP BY a.id, a.colour 
1
SELECT a.colour ncolor, 
    SUM(a.type = 'a') amount_a, 
    SUM(a.type = 'b') amount_b 
    FROM table_name a 
    LEFT JOIN table_name b 
    ON a.colour = b.colour 
    GROUP BY a.id, a.colour 
0

从你的屏幕,我说你要找的查询是一个简单的SELECT [...], COUNT(a), COUNT(b) FROM table1 GROUP BY colour

更确切地说:

SELECT colour AS ncolour 
    , COUNT(a) as amount_a 
    , COUNT(b) as amount_b 
FROM table1 
GROUP BY colour ; 

Mysql Counting Rows

附:我认为所要求的是MySQL查询从table1获取table2。