简体   繁体   English

如何在MySQL中使用单个查询从另一个表中获取计数(无数据时为零)?

[英]How to get count from another table (zero when no data) using single query in mysql?

I have two tables - 'Offered' and 'joined'. 我有两个表-“已提供”和“已加入”。 I need count of 'offered_id' from joined table and zero when not found. 我需要从联接表中计数“ offered_id”,而在找不到时为零。 My tables and output required is below. 我的表格和所需的输出如下。 How can I achieve this using single query in mysql ? 我如何使用mysql中的单个查询来实现这一点?

TABLE : OFFERED
===============
offered_id    data
-----------   ----
    1         aaaa
    2         bbbb
    3         cccc
    4         dddd
    5         eeee
    6         ffff

TABLE : JOINED
===============
joined_id      offered_id
-----------    ----------
    1               5
    2               2
    3               2
    4               1
    5               3
    6               2
    7               5

OUTPUT REQUIRED
===============
offered_id      data     count(offered_id) from joined table.(0 for no entry)
-----------    -----     ------------------------------------------------
    1           aaaa          1
    2           bbbb          3
    3           cccc          1
    4           dddd          0
    5           eeee          1
    6           ffff          0

Use count : 使用count

SELECT OFFERED.OFFERED_id,OFFERED.data,(select count(JOINED.joined_id) FROM JOINED INNER JOIN OFFERED
ON JOINED.offered_id = OFFERED.offered_id) as count_joined FROM OFFERED

尝试一下,它可以帮助我实现项目的目标,并且一定会对您有所帮助。

SELECT offered_id FROM OFFERED WHERE offered_id IN (SELECT DISTINCT offered_id FROM JOINED)

使用子查询可以实现...

SELECT OFFERED.offered_id, OFFERED.data, (SELECT COUNT(JOINED.joined_id) FROM JOINED WHERE JOINED.offered_id = OFFERED.offered_id) AS count_joined FROM OFFERED

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM