2014-07-14 23 views
1

我知道围绕此主题进行了许多讨论,但找不到任何指向明确答案方向的内容。尝试在分组的SQL SELECT语句中包含ID列,以便在网页中向下钻取

我有一个.net页面内下面的SQL语句在WebMatrix中:

为选择条件
SELECT vehicle, vehicleDescription, count(vehicleDescription) AS 'Total' 
FROM vehicles 
WHERE (branchRequirement = 'Manchester') 
AND (deliveryBranch = 'Manchester' OR deliveryBranch IS NULL) 
AND (dateDeliveredToBranch > GETDATE() OR dateDeliveredToBranch IS NULL) 
AND (vgc LIKE 'B_') GROUP BY vehicle,vehicleDescription 

输出显然是分组数据。

我想要做的是在.net页面的Webgrid中提供一个链接,允许用户使用GROUPED车辆的详细信息打开子页面。

我卡住的地方是我不能在GROUP BY中包含vehicleID,因为它们显然都是唯一的。

有没有人遇到过这样或那种类似的成功的事情,因为我把我的头发拉出来,这让我无法承担!

感谢

中号

+0

你能提供一个SQL小提琴(http://sqlfiddle.com/)和预期的输出吗? – Jonny

+0

这里没有足够的细节来回答你的问题*(我们至少需要知道模式)*,但它听起来好像你的关系数据库模型不区分* abstract * Vehicle和* instance *一辆车。很像一个* Class *和一个* Object *之间的区别。如果你有一个如'vehicleTypeID'的列和另一个列如'Vehicle',那么你可以按照第一个进行分组并计算后者。 – MatBailie

回答

1

我也碰到过类似的问题,我想出了一个解决方案是使用你已经拥有的信息。当用户点击链接时,您会知道用户想要查看的车辆和车辆描述。你不应该需要vehicleId,因为你不会有一个独特的结果。如果他们点击一个计数为3的车辆,该子页面应该包含关于所有3个结果的详细信息。

为了找到用户希望看到的3个结果,可以更改现有查询并将其用于子页面。改变后的查询应该以车辆和车辆叙述为参数。

SELECT * 
FROM vehicles 
WHERE (branchRequirement = 'Manchester') 
AND (deliveryBranch = 'Manchester' OR deliveryBranch IS NULL) 
AND (dateDeliveredToBranch > GETDATE() OR dateDeliveredToBranch IS NULL) 
AND (vgc LIKE 'B_') 
AND vehicle = @vehicle 
AND vehicleDesciption = @vehicleDescription 

传递.NET中的参数,你应该结束了,你在你的最后一个查询总结出相同的数据,因为该查询是基本相同的。

相关问题