mysql中同一个表的多个子选择

时间:2015-12-03 10:34:11

标签: mysql subquery

我有一个产品表和一个表格,其中包含产品的所有部分和数量。

产品结构表:

id 
name

零件表结构:

id
productsId
partsId
quantity

现在我想得到所有产品和每件产品的不同零件的总数量零件和数量。目前的解决方案是这个查询:

SELECT
    products.*,
    (
        SELECT count(quantity) 
        FROM product_has_part 
        WHERE product_has_part.productsId = products.id
    ) AS partsQty,
    (
        SELECT sum(quantity) 
        FROM product_has_part 
        WHERE product_has_part.productsId = products.id
    ) AS sumQty
FROM products

现在我必须在同一个表中进行子选择。所以我认为必须有更好的方法来创建这个查询?

2 个答案:

答案 0 :(得分:1)

使用join

Select *,count(quantity),sum(quantity)
From products p join 
product_has_part pp on pp.productsId = p.id
FROM products

Group by用于每个ID的计数或总和

Select *,count(quantity),sum(quantity)
From products p join 
product_has_part pp on pp.productsId = p.id
FROM products
Group by p.id

答案 1 :(得分:0)

p.f1,p.f2,p.f3表示p。

的每个字段
select p.f1, p.f2, p.f3  ... count(php.quantity), sum(php.quantity)
from products p
join product_has_part php
  on p.productsId  = php.productsId 
group by  p.f1, p.f2, p.f3 ..