php-用于根据条件随机获取定义的行数的sql mysql查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-用于根据条件随机获取定义的行数的sql mysql查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2408字,纯文字阅读大概需要4分钟。
内容图文
我正在开发一个在线考试应用程序,其中有一个问题主表,该表包含一个包含问题类型数据的字段(名称:qtype).问题类型可以是以下三种类型之一:
>单
>多个
>描述
应用程序通过使用以下查询从此主表中生成随机试卷:
select * from mst_question where test_id = 1 ORDER BY RAND() LIMIT 25
这为我的在线考试申请生成了一个包含25个问题的随机问卷.
到目前为止,它的运作良好…
现在,我需要在我的应用程序中实现一个功能,其中随机生成的25个问题(或任何数量-这取决于测试ID)将始终具有主问题表中可用的不同类型问题的FIXED混合(mst_question )用于每个随机生成的问卷集.
假设,如果主问题表中有针对特定测试ID的108个问题,并且所有三种类型的问题都在该测试的db中,则它将为每个随机查询提供相同数量的不同类型的问题!我编写了以下sql查询,以找出主问题表中每种问题的百分比.
到目前为止,我已经尝试过了,并提出了这个SQL查询:
select qtype,count(*) as qtypetotal,(select count(*) from mst_question where test_id = 1) as totalqtype,round((count(*)/(select count(*) from mst_question where test_id = 1)*100),2) as qtypepercentage from mst_question where test_id = 1 group by qtype
上面查询的输出是:
qtype qtypetotal totalqtype qtypepercentage desc 24 108 22.22 % multiple 34 108 31.48 % single 50 108 46.30 %
我需要形成一个sql查询,该查询将给我25个随机生成的问题,其中25个问题中的22.22%应该是desc类型,25个问题中的31.48%应该是多类型,而25个问题中的46.30%应该是单个类型.
我被卡住了.
提前致谢 :-)
谢谢@MikeBrant ….我已经生成了动态SQL,这绝对是我想要的方式…现在只是一个问题….如果我执行此SQL查询:
select qtype,round(25*(count(*)/(select count(*) from mst_question where test_id = 1))) as numquests from mst_question where test_id = 1 group by qtype
我得到以下结果:
“ desc”“ 6”
“多个”“ 8”
“单”“ 12”
根据上述查询,我??生成了此动态查询:
$dynamicsql[] = "(SELECT * FROM mst_question WHERE test_id = 1 AND qtype = '".trim($rstype->qtype)."' ORDER BY RAND() LIMIT ".$rstype->numquests.")";
$finalsql = implode(" UNION ALL ",$dynamicsql)." ORDER BY RAND()";
我想生成总共25个随机问题,但是这些qtype的总和是26!我得到一个额外的问题:-(
解决方法:
我可能只在这里使用UNION:
(SELECT * FROM mst_question
WHERE test_id = 1 AND qtype = 'desc'
ORDER BY RAND() LIMIT X)
UNION ALL
(SELECT * FROM mst_question
WHERE test_id = 1 AND qtype = 'multiple'
ORDER BY RAND() LIMIT Y)
UNION ALL
(SELECT * FROM mst_question
WHERE test_id = 1 AND qtype = 'single'
ORDER BY RAND() LIMIT Z)
ORDER BY RAND()
您可以像对原始问题一样使用查询,以获取要使用的X,Y和Z的值.
内容总结
以上是互联网集市为您收集整理的php-用于根据条件随机获取定义的行数的sql mysql查询全部内容,希望文章能够帮你解决php-用于根据条件随机获取定义的行数的sql mysql查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。