我一直在自己学习SQL,现在遇到这种情况。
我有3张桌子,
SALES
(商品SKU,价格,客户电子邮件,公司名称)PRODUCTS
(物料SKU,物料名称,物料类型)CUSTOMER
(客户电子邮件,姓名,部门,地址)注意:“销售”和“产品”中的“商品SKU”可以具有同一商品的多个实例。
我想从“ PRODUCTS”表中选择所有不同的SKU(而不是重复的条目),并将每个SKU与“ SALES”表进行匹配,以找到该产品的所有销售额。
ALSO
必须匹配表CUSTOMER中的“客户电子邮件”,并与SALES中的电子邮件进行匹配,并显示客户的“部门”和“地址”。
和
如果SALES中的“公司名称”与“ ABC公司”和“ DEF公司”匹配,则显示它们。
到目前为止,我已经设法从SALES和PRODUCTS中获取详细信息,但是根据公司名称,它们包括冗余SKU,并且我尚未连接CUSTOMER表。
SELECT "SALES".*,"PRODUCT"."Item SKU"
FROM "SALES"
JOIN "PRODUCT" ON "SALES"."Item SKU" = "PRODUCT"."Item SKU"
WHERE "Company Name" LIKE '%ABC Company%'
OR "Company Name" LIKE '%DEF Company%'
ORDER BY "PRODUCT"."Item SKU" ASC ;
因此,总的来说,我需要从PRODUCT中获取唯一的“ Item SKU”,并与SALES中的唯一“ Item SKU”进行匹配,并将其与客户的“客户电子邮件”“部门”和“地址”一起显示。
[好,这些不是最漂亮的,但它们应该完成工作:
`选择不同的p.sku,名称(从sku = p.sku的销售中选择总和(价格))从产品p哪里p.sku中(从销售中选择不同的sku)排序1
select distinct
p.sku,
( select sum( price ) from sales where sku = p.sku and email = c.email ) as total,
c.name,
c.email,
c.department,
c.address
from
products p,
sales s,
customer c
where
p.sku = s.sku and
s.email = c.email
order by
1, 3
select distinct
c.name,
c.department,
c.address,
s.sku,
( select sum( price ) from t_sales where sku = s.sku and email = s.email )
from
customer c,
sales s
where
c.email = s.email
order by
1, 2, 4
`