MySQL如何从用户那里获取数值?

时间:2014-06-21 03:37:53

标签: mysql

我有这3张桌子:

Users:
user_id|user_nick
   1   |    a
   2   |    b

Category:
cat_id|cat_type
   1  |    a
   2  |    b
   3  |    c
   4  |    d

Meta:
met_id|met_name|met_user|met_type
   10 |  bla   |    1   |    1
   11 | blabla |    2   |    2
   12 |  foo   |    1   |    3
   13 | blafoo |    2   |    4
   14 | foofoo |    1   |    4
   15 | foobla |    1   |    4

我怎样才能归还这样的东西?

user_id|met_type|total
   1   |   1    |  1
   1   |   2    |  0
   1   |   3    |  1
   1   |   4    |  2

仅适用于一个用户而非所有用户。

met_type是来自Category的外键。

我试过这样但没有成功:/

SELECT met_user, met_type, COUNT(*) FROM Meta GROUP BY met_user WHERE met_user = '1'

1 个答案:

答案 0 :(得分:2)

查询:

SELECT met_user, met_type, count(*)
FROM Meta
WHERE met_user='1'
  GROUP BY met_type;

要获得空组,您可以在此处使用generateSeries()

SELECT m.met_user, g.meta_type, count(m)
FROM generate_series(1, 4) AS g(meta_type)
  LEFT OUTER JOIN Meta AS m
    ON m.met_user='1'
    AND m.met_type=g.meta_type
GROUP BY g.meta_type, m.met_user
ORDER BY g.meta_type;

看看吧!我做了sql fiddle