我不能在標題部分更具體,但我想爲我做一些有點複雜的事情。我以爲我做到了,但事實證明它是越野車。涉及羣組和連接的SQL查詢
我有三個表如下:
ProjectTable
- idProject
- 標題
- idOwner
OfferTable
- idOffer
- idProject
- idAccount
AccountTable
- idAccount
- 用戶名
現在在一個查詢我的目標是列出所有制造最優惠項目,並在查詢中我也想得到詳細說明像是所有者的用戶名,提供者的用戶名*等等。所以我不必再爲每個項目查詢。
這是我的破碎的查詢,這是我第一次使用GROUP BY的實驗,我可能並不完全瞭解它。
SELECT Project.addDate,Project.idOwner ,Account.Username,Project.idProject,
Project.Price,COUNT(Project.idProject) as offercount
FROM Project
INNER JOIN Offer
ON Project.idProject= Offer.idProject
INNER JOIN Account
ON Account.idAccount = Project.idOwner
GROUP BY Project.addDate,Project.idOwner,
Account.Username,Project.idProject,Project.Price
ORDER BY addDate DESC
*:我寫了想也沒想我只是想拿出例如額外的信息,這是毫無意義的感謝胡沙姆阿里。
爲清楚起見,我寧願'COUNT (o.idOffer)',因爲我們實際上是在計算優惠,而不是項目。 –
@HosamAly,聽起來很公平。 –
此查詢是否返回具有0個優惠的項目?我改變了這個以適合我的實際表名,但我不確定我是否犯了一個錯誤,或者這個查詢沒有顯示它們。 我將最後兩個連接類型更改爲'FULL和LEFT',現在當它爲零時我得到NULL。這不是一個問題,並且很容易用代碼修復,但我想知道如何將這些NULL設置爲零來改變。 – EralpB