【发布时间】:2013-02-18 19:23:42
【问题描述】:
我有一个表名“产品”
ProductID ProductName
1 A
2 B
3 C
4 D
另一个名为“ViewedProduct”的表
ProductID Views UserID
2 2 55
2 1 40
1 10 40
1 50 127.0.1
3 51 127.0.1
对于 UserID 55,预期结果应该是
ProductID ProductName
2 B
1 A
3 C
4 D
UserID 55 视图应位于顶部,所有其他 viewdproduct 应按其视图总和排序。产品 id 1 由两个不同的 UserID 查看,它们的总查看次数为 60,这就是为什么它应该排在第二位的原因。并且产品 id 3 有 51 次浏览,它应该排在第三位。
第二个例子:
ProductID Views UserID
2 2 55
3 3 55
2 1 40
1 10 40
1 50 127.0.1
3 51 127.0.1
4 50 127.0.1
现在对于 UserID 55 ,它应该首先根据 UserID 55 对结果进行排序。然后是剩下的结果。现在我需要的预期结果应该是
ProductID ProductName
3 C
2 B
1 A
4 D
产品 ID 3 和 2 不在顶部,因为 UserId 55 分别查看了 3 次和 2 次,productid 1 排在第三位 UserID 55 没有查看此产品。但是他们从查看表中获得的总浏览量是 60。而 productID 4 排在最后,因为用户 ID 55 还没有查看过这个产品,但从查看表中获得的总浏览量是 50。等等..
--如果需要进一步解释,请评论
【问题讨论】:
-
逻辑在哪里?
-
那么问题是什么?
-
要么你的例子是错误的,要么我没听懂......你能解释一下为什么应该返回 ProductID 的 1 和 3 而与 UserID 55 没有关系吗?
-
缺少与UserID相关的ProductID表
标签: sql sql-server sql-server-2008 tsql