0
SELECT 
    `list_type`.`type`
FROM
    `events`
        INNER JOIN
    `list_type` ON `events`.`type` = `list_type`.`id`
WHERE
    `events`.`date` BETWEEN '2012-01-01' AND '2012-12-31'
        AND `events`.`center_id` = 2
GROUP BY `events`.`name`

Baseline
Baseline
Baseline
Baseline
Baseline
Baseline
Baseline
Special Events
Special Events
Special Events

しかし、私はこのように各タイプをカウントしたいと思います

Baseline    7
Special Events  3

だから私はこれを試しました

SELECT 
    `list_type`.`type`,
    COUNT(*)
FROM
    `events`
        INNER JOIN
    `list_type` ON `events`.`type` = `list_type`.`id`
WHERE
    `events`.`date` BETWEEN '2012-01-01' AND '2012-12-31'
        AND `events`.`center_id` = 2
GROUP BY `events`.`name`

しかし、それは私にこれを与えます:

Baseline    45
Baseline    3
Baseline    56
Baseline    23
Baseline    12
Baseline    9
Baseline    2
Special Events  5
Special Events  4
Special Events  18

出力フォームのクエリではなく、各名前とタイプの数をカウントしています。COUNT( list_type. type) も試してみました。

4

3 に答える 3

0

GROUPその後、編list_type.type

SELECT  list_type.type,
        COUNT(*) totalCount
FROM    events
        INNER JOIN list_type 
            ON events.type = list_type.id
WHERE   events.date BETWEEN '2012-01-01' AND '2012-12-31'
        AND events.center_id = 2
GROUP   BY list_type.type
于 2013-01-28T16:01:12.067 に答える
0

グループ化しないevents.name

でグループ化してみてくださいlist_typetype

イベントごとにグループ化していたので、イベントに基づいて結果と数値が得られました!

于 2013-01-28T16:01:18.603 に答える
0

次のように、サブクエリを使用してクエリの結果をいつでもカウントできます。

SELECT type, count(*)
FROM (
  ...your query above...
) s
GROUP BY type

確かにうまくいきますが、必ずしも最善の方法であるとは限りません。でグループ化する必要があると思いますlist_type.type

GROUP BY list_type.type

次に、次のように、すべてのタイプの個別のイベント名をカウントする必要があります。

SELECT 
    `list_type`.`type`,
    COUNT(DISTINCT `events`.`name`)
于 2013-01-28T16:09:54.840 に答える