在同一表格内匹配
下面我有一个MySQL数据库,其中"id"
只是每行的一个id。 “问题”显示问题的编号。有四个问题,11, 12, 13 and 14
。对于每个问题,用户都有四个答案选项(1,2,3 and 4)
,它存储在"answer"
列中。 "user"
列指示接听的用户。在这个例子中,我们有用户10,11和12在同一表格内匹配
id question answer user
1 11 2 10
2 12 2 10
3 13 3 10
4 14 4 10
5 11 2 11
6 12 2 11
7 13 4 11
8 14 1 11
9 11 2 12
10 12 2 12
11 13 1 12
12 14 1 12
假设用户10是基准用户,这意味着我想知道用户如何以及10轮与其他的比赛。如何使用SQL代码和/或 php代码如何匹配用户的答案,以便我以最高的百分比显示的百分比匹配百分比。所以在这个例子中我正在寻找类似的东西。
user percent
1 11 50%
2 12 75%
我不确定这是否只有SQL一路可能。也许需要一些PHP来将计数转换为%例如。
最后我得到了你想要的输出
试试这个:
SELECT * ,round(count(*)/(SELECT count(*) FROM `list` where user=10)*100) as
pecentage FROM `list` as l where l.answer=(SELECT m.answer FROM `list` as m
where m.user=10 and l.question=m.question) group by (l.user) order by pecentage
它会产生出把尽可能
,您可以在如果你没有条件添加l.user!=10
想要user 10
值。
如果它的工作给你一个拇指:) –
太棒了!完美的作品!好工作!!以及在哪里准确添加“l.user!= 10”? –
SELECT *,round(count(*)/(SELECT count(*)FROM'list' where user = 10)* 100) pecentage FROM'list' as l where l.answer =(SELECT m.answer FROM' list'as m where m.user = 10 and l.question = m.question)and l.user!= 10 group by(l.user)order by pecentage –
假设这是正确的,那么使用SQL和PHP的组合可能会更好。 – chris85
不错的问题,但你到现在有什么尝试吗? –