我使用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子句或聚合函數 LINE 1中:select c.*, p.*
」。
但是,如果我刪除了第*從select語句(假設我一個人不想要的產品,只有客戶),它運行良好。我怎樣才能獲得產品?
更新:訂購了兩個或更多產品後,客戶必須在其輸出的產品上出現其所訂購產品的次數。我想作爲輸出表5列:
Cust ID | Cust Name | Cust City | Prod ID | Prod Name | Prod Price
是否有可能在SQL因爲group by
應該使用?建議立即進行刪除它可以在不同的表多個列中使用?
你能張貼所需的輸出? – peterm
請提供良好的信息。 – Anvesh