Era*_*lpB 4 sql t-sql sql-server-2008
我不能在标题部分更具体,但我想为我做一些有点复杂的事情.我以为我做到了,但事实证明它是有缺陷的.
我有三个表如下:
ProjectTable
OfferTable
AccountTable
现在在一个查询中,我的目标是列出所有项目,并提供最多的报价,在查询中我还想获得详细信息,如所有者的用户名,提供者的用户名*等等.所以我不必再次查询每个项目.
这是我的破解查询,这是我对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
Run Code Online (Sandbox Code Playgroud)
*:我写道,我没想到我只想提供示例额外信息,这要归功于Hosam Aly.
试试这个(针对没有优惠的项目进行修改):
SELECT
Project.addDate,
Project.idOwner,
Account.Username,
Project.idProject,
Project.Price,
ISNULL(q.offercount, 0) AS offercount
FROM
(
SELECT
o.idProject,
COUNT(o.idProject) as offercount
FROM Offer o
GROUP BY o.idProject
) AS q
RIGHT JOIN Project ON Project.idProject = q.idProject
INNER JOIN Account ON Account.idAccount = Project.idOwner
ORDER BY addDate DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14812 次 |
| 最近记录: |