我在 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
它抛出错误:
“列“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 是否有可能?应该在不同表的多个列上使用它吗?