MySQL的 - 的东西至少有一个,比3个表
问题描述:
之间更大的我有3个表:MySQL的 - 的东西至少有一个,比3个表
我需要检索一月至少一个产品中所出售的卖家的名称,其中的一月份销售该产品说的总量大于1000
我想过开始是这样的:
SELECT c.nom, c.prenom
FROM Commerciaux c
LEFT JOIN Ventes v ON c.id_commerciaux = v.id_commerciaux
WHERE EXISTS (SELECT 1
FROM Produits p, Ventes v
WHERE p.id_produits = v.id_produits
AND MONTH(v.date) = 1
GROUP BY p.nom
HAVING SUM(v.montant) > 200)
AND MONTH(v.date) = 1
GROUP BY c.nom, c.prenom
的SELEC T在WHERE EXISTS似乎正在工作,但是当我必须链接表Sellers时,我不知道如何写它。
任何帮助将是伟大的!
答
您可以使用这样的事情:
select distinct s.name
from Sellers s,
( -- get all those products that qualify (more than 1000 sales)
select product_id, sum(amount) as total
from Sales
where Month(date) = 1
group by product_id
having total > 1000
) vp,
Sales sa
where
s.id = sa.commercial_id and
sa.product_id = vp.id and
Month(sa.date) = 1
@Leo答案将返回只有那些在1月份销售超过100的产品,而不是返回所有的卖家卖家已经出售了任何金额超过1000的产品。
答
你可以使用一个嵌套查询:
SELECT s.name FROM
(Sellers as s JOIN Sales as sp on sp.commercial_id = s.id) JOIN
Product as p on p.id = sp.product_id
WHERE MONTH(sp.date) = 1 AND YEAR(sp.date) = 2017 AND
(SELECT SUM(Amount) FROM Sales as sp2 WHERE sp2.commercial_id = s.id
AND sp2.product_id = p.id
AND MONTH(sp2.date) = 1 AND YEAR(sp2.date) = 2017) > 1000
首先,加入外键的三个表,然后运行一个嵌套查询来计算特定产品所选择的卖家的数量进行检查,通过数量限制。
你说得对。我试过你的,但它返回两个卖家,而不是它应该的。 – Komarzer
哦,我认为你一直在寻找所有在1月份销售过任何数量产品的卖家,只要该产品在1月份的销售量大于1000,而不管卖家。举例来说,如果1月份的产品1的销售量大于1000,卖方1的销售量仅为5,而卖方2的销售量为999,那么我就会返回两者。 – MikeOhMeelah