来自两个不同表格的COUNT

时间:2014-01-13 12:45:12

标签: mysql sql select count group-by

这是一个时髦的问题,我知道这一点。也许这就是因为我真的很累。

现在,不要责怪设计 - 它有缺陷,但我无能为力,好吗?

  • 两个表,由id-field链接。
  • 第一张表包含仓库中的仓位(表P)
  • 第二个表包含存储在仓库中每个位置的文章(表PA)
  • 仓库中的所有仓位都存在于P表中(> 5000条记录)
  • 每个职位可以包含多篇文章
  • P表中的位置不在PA表中

来自positionarticles的计数加上位置 的位置。

真的没有比这完全愚蠢更好的方法吗?:

SELECT SUM(row)
FROM
(
  SELECT COUNT(*) row
  FROM PA
  UNION
  SELECT COUNT(*)
  FROM P
  WHERE ID NOT IN
    (
      SELECT P_ID
      FROM PA
    )
) as rowcounter

示例数据

表P:

ID   Name
1    A01
2    A03
3    B01  *
4    B02  *

表PA:

ID   P_ID   A_ID
1    1      201  *
2    1      202  *
3    1      203  *
4    2      205  *

返回的计数是6 => PA中的4行+ 2行(PA中不存在P_ID)。计算的行是星号(*)。

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT P.ID, COUNT(PA.ID) noOfArticles
FROM P 
LEFT JOIN PA ON P.ID = PA.P_ID 
GROUP BY P.ID