【发布时间】:2018-09-03 05:52:46
【问题描述】:
我正在尝试将以下 3 个表连接在一起,但我只想按 customer_ID 分组在前 2 个表中,如何实现?
换句话说,我使用的第三张表只是为了消除记录。非常感谢!
表 1
customer_ID product_No
100 ABC001
100 ABC111
100 ABC112
200 ABC002
表2
product_No Amount
ABC001 10
ABC002 50
ABC111 60
ABC112 70
表 3
Valid_Product Desc
ABC001 Y
ABC111 Y
我可以通过这样做来加入表 1 和 2
select
t1.product_No, Max(t2.amount)
from
t1, t2
where
t1.product_No = t2.product_No
group by
customer_ID
现在我如何在同一个查询中加入表 3 并仅获取客户 100 的 ABC111 的值,因为这是具有最大金额的有效产品?
所以结果将是Customer_ID 100 Amount 60 目标是在客户下获得最大数量的产品(仅当产品在第 3 个表中带有 Y 的情况下)。
【问题讨论】:
-
请描述您要达到的目标。说你想
group by和join没有帮助。 . .因为那不是你想要做的。您对问题中的查询的尝试完全无效。 -
表 3 在您想要的输出中的作用是什么?您能说得更具体些吗?
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 多年前),不鼓励使用它 -
目前还不清楚:您想要的输出在当前查询的投影中有 CUSTOMER_ID 有 PRODUCT_ID。哪个是正确的?
-
附注:您应该始终解释您的表格。要么显示创建语句,要么至少告诉我们它们的唯一键。一个产品可以在 t1 中多次出现吗?即使是同一个客户?一个产品可以在 t2 中出现多次吗?一个产品可以在 t3 中出现多次吗?即使使用相同的描述?
标签: sql oracle join group-by max