- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢做一些简单的事情,但我不知道从哪里开始。
所以我有 4 张 table :
- Table question (id_question)
- Table trad (id_trad, #id_question)
- Table vote_up (id_vote_up, #id_trad)
- Table vote_down (id_vote_down, #id_trad)
对于 id_question=1,我想选择 vote_up 数量较高且 vote_down 数量较低的 4 个翻译(来自 trad)
是否可以通过单个查询来完成此操作?有什么想法吗?
或者也许简单地添加“upvotes”和“downvotes”并将相应字段更新 1 更好?
最佳答案
计划
<小时/>
- get count of upvotes grouped by each trad
- get count of downvotes grouped by each trad
- left join all trad to above datasources with score function, order by and limit of 4
输入示例
create table question
(
id_question integer primary key not null
-- other metadata here..
);
create table trad
(
id_trad integer primary key not null,
id_question integer not null,
foreign key ( id_question ) references question ( id_question )
);
create table vote_up
(
id_vote_up integer primary key not null,
id_trad integer not null,
foreign key ( id_trad ) references trad ( id_trad )
);
create table vote_down
(
id_vote_down integer primary key not null,
id_trad integer not null,
foreign key ( id_trad ) references trad ( id_trad )
);
insert into question
( id_question )
values
( 1 )
;
insert into trad
( id_trad, id_question )
values
( 1, 1 ),
( 2, 1 ),
( 3, 1 ),
( 4, 1 ),
( 5, 1 ),
( 6, 1 ),
( 7, 1 )
;
insert into vote_up
( id_vote_up, id_trad )
values
( 1, 1 ),
( 2, 1 ),
( 3, 1 ),
( 4, 1 ),
( 5, 1 ),
( 6, 1 ),
( 7, 3 ),
( 8, 3 ),
( 9, 3 ),
( 10, 3 ),
( 11, 4 ),
( 12, 4 ),
( 13, 5 ),
( 14, 6 ),
( 15, 6 ),
( 16, 7 ),
( 17, 7 ),
( 18, 7 )
;
insert into vote_down
( id_vote_down, id_trad )
values
( 1, 1 ),
( 2, 1 ),
( 3, 1 ),
( 4, 1 ),
( 5, 1 ),
( 6, 1 ),
( 7, 3 ),
( 8, 3 ),
( 9, 3 ),
( 10, 4 ),
( 11, 4 )
;
<小时/>
查询
select trad.id_trad, coalesce(upvotes, 0) - coalesce(downvotes, 0) as score
from trad
left join
(
select
trad.id_trad, count(*) as upvotes
from trad
inner join vote_up
on trad.id_trad = vote_up.id_trad
group by 1
) uv
on trad.id_trad = uv.id_trad
left join
(
select
trad.id_trad, count(*) as downvotes
from trad
inner join vote_down
on trad.id_trad = vote_down.id_trad
group by 1
) dv
on uv.id_trad = dv.id_trad
where trad.id_question = 1
order by score desc
limit 4
;
输出
+---------+-------+
| id_trad | score |
+---------+-------+
| 7 | 3 |
| 6 | 2 |
| 3 | 1 |
| 5 | 1 |
+---------+-------+
<强> sqlfiddle ( separate structures )
<小时/>注意
consider also restructuring your votes into one table. atm vote_up and vote_down are unnecessarily duplicating the same structure.. this would look like :
关于mysql - SQL : select top 4 results with the higher votes UP and lower votes DOWN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449300/
我的 .htaccess 文件需要帮助。到目前为止,似乎没有任何效果。我制作了一个名为 vote.php 的 PHP 文件,它使用 GET 变量将用户重定向到适当的投票网站。现在,我希望用户能够键入
我喜欢做一些简单的事情,但我不知道从哪里开始。 所以我有 4 张 table : Table question (id_question) Table trad (id_trad, #id_quest
每个用户可以为每个项目投票一次(只有注册用户可以投票)。所以我有一个用户投票表,其中包括用户 ID、投票项目 ID 和投票值(从 1 到 10)。 我需要显示每个项目的总票数和评分,所以我想知道什么是
没有通用 View ,一切正常 NoReverseMatch at /app1/2/ Reverse for 'vote' with arguments '('',)' not found. 1 pa
我正在构建一个高度依赖匿名用户对某种项目进行投票的小型应用程序。它太小了,需要注册会很乏味,而且没有道理。 无论如何,我对此做了一些研究,包括在 stackoverflow ( https://sta
我希望使用我的应用程序向 Facebook 提交几张图片,并邀请我的 friend 在特定的时间间隔内对其进行投票。我的问题是—— graphAPI 是否支持这一点。 我可以将它与我的后端系统集成,以
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 12 年前关闭。 Improve this
我的 votes 表如下所示: id: integer vote: boolean voteable_id: integer voteable_type: string voter_id: integ
我被要求设计一个网络解决方案,以允许在公共(public)集会中投票。 该解决方案应在服务器上使用 node.js 和 javascript 编写,可能在客户端上使用 angular.js (因为ja
我有一个模型帖子和一个模型投票。 Vote(来自 django-voting)本质上只是一个指向 Post 和 -1、0 或 1 的指针。 还有巡回赛,它是开始日期和结束日期。在锦标赛开始和结束之间发
我有三个表Feed、Vote 和Event。 Feed +id +content +voteCount --> hold the number of votes on this feed Vote
您好,我正在构建一个允许对视频进行投票的视频投票网站。我希望用户能够在不中断视频播放的情况下投票。 这是我正在使用的片段。 if ($_POST['vote']) { $sql = mysql
我正在编写一个内联网应用程序,其功能之一大致类似于内容投票 - 与 SO、Amazon 和许多其他网站所做的没什么不同。 假设每个可投票的内容都有一个唯一的 ID,并且每个用户(他们经过身份验证)都有
我需要扩展标准 XMPP 协议(protocol)的功能,以便能够执行投票 session (在多用户聊天中)。请指导我 - 我可以使用一些现有的 XEP(如数据表单)还是我需要实现一些自定义 XEP
我们公司使用 HP 质量中心来管理/跟踪缺陷和其他类型的问题。 我想拥有一个单独的系统或与 QC 的某种集成,以允许我团队中的开发人员对问题进行投票。 这可以在 QC 上做吗?它是其他问题跟踪器的固有
我正在尝试创建一个简单的 Google 电子表格函数,将排名转换为积分系统,然后添加积分。有权访问电子表格的人 (A、B、C、D) 将根据第一选择 (1)、第二选择 (2) 和第三选择 (3) 对他们
一般来说,如何阻止用户看到他已经投票过的个人资料,这样他就不会对其投票两次? 我有一个用户表(称为“用户”),每个用户都有一个唯一的用户 ID(列为“userID”),我还有另一个表(称为“投票”),
我已经盯着这个看了 20 分钟,无法理解它。我以前做过,我只是不记得在哪个项目中(所以我可以引用代码)。 我有这样一张表: votes [table] id - serial , primary
我有一个投票表,其中包含一个 post_id 列、一个 user_id 列和一个 vote 列。当有人为某个帖子投票时,会添加一行记录他们投票的帖子的 ID、他们的 user_id,并且 vote 列
我是 Rails 的新手,所以不要着急。我创建了一个博客,还为用户创建了表示他们“喜欢”特定帖子的功能。我实现它的方法是使用 post 表和一个单独的表“投票”。当用户单击“喜欢”按钮时,它会将值为“
我是一名优秀的程序员,十分优秀!