我有一个产品表和一个表格,其中包含产品的所有部分和数量。
产品结构表:
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
现在我必须在同一个表中进行子选择。所以我认为必须有更好的方法来创建这个查询?
答案 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 ..