加入时如何从第一个表字段计数

时间:2015-09-23 09:57:41

标签: mysql join

我在数据库中有两个mysql表。 table1和table2。

表1

event_id  |  event_name
------------------------
1         |  event1
------------------------
2         |  event2
------------------------
3         |  event3
------------------------

表2

time_id  |  event_id  |  time_name  |  status  |
-----------------------------------------------
1        |  1         |   morning   |  paid    |
------------------------------------------------
2        |  1         |   morning   |  not paid |
------------------------------------------------
3        |  2         |   afternoon |  paid     |
-------------------------------------------------

我希望在根据event_id加入这两个表后,从第一个表中获取event_id的计数。为什么我需要加入是因为,我需要在time_name中有一个WHERE条件。

到目前为止,我的查询是这样的,

SELECT count(`table1`.`event_id`) FROM `table1` JOIN `table2` ON `table2`.`event_id` = `table1`.`event_id` WHERE `table2`.`time_name` = 'morning'

但我得到结果为2.为什么会这样?我要求的结果是1

1 个答案:

答案 0 :(得分:1)

您正在使用event_id字段(仅获取table2具有event_id的行)在表2上执行INNER JOIN,因此您需要使用LEFT JOIN,它将返回table1中的所有行(除了在[3 7])并使用匹配的event_id连接table2中的任何行(否则返回NULL字段):

WHERE