【发布时间】:2013-05-20 08:16:52
【问题描述】:
我在 PostgreSql 数据库中使用三个表:
Customer(Id, Name, City),
Product(Id, Name, Price),
Orders(Customer_Id, Product_Id, Date)
我想执行一个查询以从他们那里获取“已经订购了至少两种不同产品以及产品的客户”。我写的查询是:
select c.*, p.*
from customer c
join orders o on o.customer_id = c.id
join product p on p.id = o.product_id
group by (c.id)
having count(distinct o.product_id)>=2
它抛出错误:
"column "p.id" 必须出现在 GROUP BY 子句中或在聚合函数中使用
第 1 行:select c.*, p.*"。
但是,如果我从 select 语句中删除 p.*(假设我不想要产品,只想要客户),它运行良好。我怎样才能得到产品呢?
更新:订购了两种或更多产品后,客户在输出中出现的次数必须与他订购的产品一样多。我想要一个包含 5 列的表格作为输出:
Cust ID | Cust Name | Cust City | Prod ID | Prod Name | Prod Price
鉴于应该使用group by,SQL 中是否有可能?应该在不同表的多个列上使用它吗?
【问题讨论】:
-
你能发布想要的输出吗?
-
请提供好的信息。
标签: sql database postgresql join group-by