【问题标题】:Mysql query to select quiz options as A B C D with using extra foreach loopMysql查询以使用额外的foreach循环将测验选项选择为A B C D
【发布时间】:2021-02-27 09:26:38
【问题描述】:

我正在研究测验概念,所以首先将获取所有 20 个问题,然后每个问题都将是循环的,并且每个循环我都会传递问题 ID 并获取这些相关问题的选项,但我的要求是获得像 A B C D 这样的选项在所有选项之前,不使用额外的循环

选项表结构:

id    option_value       question_id

1      some value          1
2      some value          1
3      some value          1
4      some value          1
5      some value          2
6      some value          2
7      some value          2
8      some value          2

预期输出:

option_id   option_name option_value
 1           A           some value
 2           B           some value
 3           C           some value
 4           D           some value
 5           A           some value
 6           B           some value
 7           C           some value
 8           D           some value



$question_list // all 20 question using select *



foreach($question_list as $list){
$this->db->select('id,option_vaue')->from('option')->where('question_id',$list->id)->order_by('id','asc')->get()->result();
}

【问题讨论】:

  • is to get option like A B C D infront of all options without using extra loop 是什么意思??
  • 请给我们看图片。

标签: php mysql codeigniter


【解决方案1】:

如果您使用的是 8.0.0 或更高版本,则可以使用 MySQL 窗口函数。等效的 MySQL 查询如下所示 -

SELECT 
`id`,
`option_value`,
`question_id`,
CHAR(64 + ROW_NUMBER() OVER (PARTITION BY `question_id` ORDER BY `id` ASC)) 'Option'
FROM `question`

【讨论】:

  • Aakash Johari 我试过你的代码,但显示错误 wrog 查询,请检查.....
猜你喜欢
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多