【问题标题】:How to count occurance of foreign key in multiple tables如何计算多个表中外键的出现次数
【发布时间】:2021-04-05 02:06:03
【问题描述】:

我有多个表:

Table_one 有行 idtext 其他表有外键table_one_id 我想分别计算外键在不同表中出现的次数。

表一看起来像这样

id text
1  tx
2  tx
3  tx

表二如下所示:

id text table_one_id_fk
 1   tx      1
 2   tx      2
 3   tx      2
 4   tx      1
 5   tx      3
 6   tx      2
 7   tx      2

表三如下所示:

id text table_one_id_fk
 1   tx      1
 2   tx      3
 3   tx      2
 4   tx      1
 5   tx      1
 6   tx      3

我想得到这样的表:

id  text  table_two_count table_three_count
1   txt        2                 3
2   txt        4                 1
3   txt        1                 2

我这样运行查询:

SELECT table_one.id, table_one.text, count(*) 
FROM table_one  
INNER JOIN table_two ON table_two.table_one_id = table_one.id
GROUP BY companies.cin

但这只会给我 table_two 的结果。

对于我想要的输出,查询应该是什么样子?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    你可以这样做,你需要左连接表和计算每个表中的匹配数:

    SELECT table_one.id, table_one.text
    , count(table_two.*) table_two_count
    , count(table_three.*) table_three_count
    FROM table_one  
    LEFT JOIN table_two ON table_two.table_one_id = table_one.id
    LEFT JOIN table_three ON table_three.table_one_id = table_one.id
    GROUP BY table_one.id, table_one.text
    

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多