【问题标题】:How to get unique data from 3 tables by matching some redundant fields?如何通过匹配一些冗余字段从 3 个表中获取唯一数据?
【发布时间】:2019-10-11 10:17:36
【问题描述】:

我一直在自学 SQL,现在遇到这种情况的问题。

我有 3 张桌子,

  • SALES(商品 SKU、价格、客户邮箱、公司名称)
  • PRODUCTS(商品 SKU、商品名称、商品类型)
  • CUSTOMER(客户邮箱、姓名、部门、​​地址)

注意:SALES 和 PRODUCTS 中的“Item SKU”可以有同一个项目的多个实例。

我想从“PRODUCTS”表中选择所有不同的 SKU(不是重复的条目),并将每个 SKU 与“SALES”表进行匹配,以查找该产品的所有销售额。

还有

必须匹配 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”相匹配,并将它们与相应的“客户电子邮件”“部门”和“地址”一起显示客户。

【问题讨论】:

  • 向我们展示一些示例表数据和(匹配的)预期结果 - 作为格式化文本,没有图像。
  • @jarlh 刚刚添加了示例数据,抱歉现在出差所以使用记事本。
  • 示例数据最好显示为formatted text(无法从图像中复制数据)。请参阅here,了解有关如何创建漂亮表格的一些提示。
  • 样本数据和期望的结果会有所帮助。你说products 有重复的 SKU,但你的数据没有显示任何 - 而且这样的重复没有真正的意义。
  • @GordonLinoff 抱歉,只有 SALES 列出了多个 SKU。另外我不能编辑它,因为你已经重新格式化了它,我的编辑需要是实质性的(因为变化很小)。

标签: sql


【解决方案1】:

好的,这些不是最漂亮的,但它们应该可以完成工作:

` 选择不同的 p.sku, p.name, (从 sku = p.sku 的销售额中选择总和(价格)) 从 产品 p 在哪里 p.sku in(从sales中选择不同的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

`

【讨论】:

    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多