【问题标题】:How to get 2 results from 3 tables with 1 mysql syntax如何使用 1 个 mysql 语法从 3 个表中获取 2 个结果
【发布时间】:2025-12-06 03:10:02
【问题描述】:

我有 3 张这样的桌子

soft_id   soft_name
1         Office

pu_id   soft_id   pu_quantity
1       1         10
2       1         20
3       1         30

own_id   soft_id   owner
1        1         Peter
2        1         Tommy
3        1         David

如何在一个 mysql 查询中得到这样的结果

soft_id   soft_name   sum(pu_quantity)   count(owner)
1         Office      60                 3

【问题讨论】:

  • 我试过这个并得到相同的结果,但不知道我的还是 Christian Mark 的更好 SELECT a.soft_id, a.soft_name, count(c.owner) AS number FROM tracking, (SELECT a .soft_id, a.soft_name, sum(b.pu_quantity) AS total FROM a, b WHERE a.soft_id =b.soft_id) AS table_test WHERE c.soft_id = table_test.soft_id

标签: mysql sql


【解决方案1】:

试试这个:

SELECT a.soft_id,
  a.soft_name,
  b.p_cnt AS quantity,
  c.o_cnt AS owner_count
FROM soft a
INNER JOIN
  (SELECT soft_id, SUM(pu_quantity) AS p_cnt FROM product GROUP BY soft_id
  ) b
ON a.soft_id = b.soft_id
INNER JOIN
  (SELECT soft_id, COUNT(*) AS o_cnt FROM owner GROUP BY soft_id
  ) c
ON b.soft_id = c.soft_id
GROUP BY a.soft_id,
  a.soft_name

SQLFiddle

注意:假设表名分别是soft、product和owner。

【讨论】:

    【解决方案2】:

    试试这个

    SELECT S.soft_id,S.soft_name,P.sum(pu_quantity),O.count(owner)
    FROM Soft S INNER JOIN Product P ON S.soft_id = P.soft_id
    Inner JOIN Owner O = P.soft_id = O.soft_id
    Group By S.soft_id,P.soft_id,O.soft_id,S.soft_name
    

    【讨论】: