2011-10-07 53 views
0

表A我想查询节目表结果和使用MySQL查询只

ID | NAME 
-----+------- 
n1 | BLACK 
n2 | WHITE 
n3 | RED 
n4 | GREEN 

表B

ID | A_ID | BLABLA  | TIME 
---+---------+---------------+-------- 
1 | n1 | X   | sometime 
2 | n1 | X   | sometime 
3 | n1 | X   | sometime 
4 | n1 | Y   | sometime 
5 | n1 | Z   | sometime 
6 | n2 | Y   | sometime 
7 | n2 | Y   | sometime 
8 | n2 | Y   | sometime 
9 | n3 | X   | sometime 
10 | n3 | Z   | sometime 
11 | n3 | Z   | sometime 
12 | n3 | Z   | sometime 

我的问题

我想作秀查询表结果并仅使用MySQL查询。

表结果

NAME  |  X | Y | Z 
-----------+----------+---------+----- 
BLACK  | 3  |  1 | 0 
WHITE  | 0  |  3 | 0 
RED  | 1  |  0 | 3 
GREEN  | 0  |  0 | 0 
+0

它是固定的,你将只有X,Y,Z值(或结果表中的列) – Saket

回答

1
SELECT 
    a.name 
    , sum(CASE WHEN b.blabla LIKE 'X' THEN 1 ELSE 0 END) AS X 
    , sum(CASE WHEN b.blabla LIKE 'Y' THEN 1 ELSE 0 END) AS Y 
    , sum(CASE WHEN b.blabla LIKE 'Z' THEN 1 ELSE 0 END) AS Z 
FROM tablea a 
INNER JOIN tableb b ON (a.id = b.a_id) 
GROUP BY a.name 

我用like代替=,因为like总是不区分大小写和=不是。
如果blabla是一个枚举,那么我推荐使用=

+0

它的工作。 非常感谢。约翰 – aCmySQL