【问题标题】:how to select data from two tables in mysql如何从mysql中的两个表中选择数据
【发布时间】:2019-07-07 17:48:24
【问题描述】:

我的 SQL Server 数据库中有两个表。第一个是问题,第二个是 question_options。每个问题 4 个选项 两个表中都有一个列 qid。 我的数据库结构: 问题表:

qid    q_text     discription
1    what is ip    some data
2    what is ipv   same data

和这样的 question_options 表:

   oid qid   options     correct_answer
    1   1    option1       0
    2   1    option2       0
    3   1    option3       1
    4   1    option4       0
    5   2    example1      0
    6   2    example4      1
    7   2    example3      0
    8   2    example2      0

如何获取 questions 和 question_options 表数据以及如何显示 获取的数据是这样的:

<div id="qid">qid</div>
<div id ="q_text">q_text</div>
<div id="options1">option1</div>
<div id="options2">option2</div>
<div id="options3>option3</div>
<div id="options4>option4</div>
<div id="correct_answer">correct_answer</div>
<div id="discription">discription</div>

如何从table1中选择qid,q_text和4个选项,其中qid from table2用一条sql语句?

【问题讨论】:

  • oid 的顺序将始终与选项的顺序相同,即 oid 1 将具有 option1 而 oid 2 将始终具有 option2? MySQL的版本是多少?
  • 选项顺序没有区别

标签: mysql


【解决方案1】:

您可以使用 QID 上的连接来获取数据,并使用 SUBSTRING 减去字符串,如下所示: 如果您想获取所有正确答案,您可以使用:

select 
q.qid,
q.q_text,
qo.options,
if(qo.correct_answer = 1,substring(qo.options,length(qo.options)),null) as correct_answer,
q.description
from questions q,question_options qo
where q.qid = qo.qid

如果您只想获取正确答案的数据,那么您可以使用:

select 
q.qid,
q.q_text,
qo.options,
if(qo.correct_answer = 1,substring(qo.options,length(qo.options)),null) as correct_answer,
q.description
from questions q,question_options qo
where q.qid = qo.qid
and if(qo.correct_answer = 1,1,null) is not null

如果您想获取单个问题的数据,您可以最后再获取一个条件:

and q.qid = 1

Demo

【讨论】:

  • 我检查了第一个它正在打印整行四次我只需要打印选项 4 次而不是整行
【解决方案2】:
select 
 q.qid, 
 q.q_text,  
 qo.options, 
 IF(qo.correct_answer = 1, substring(qo.options, 7, 1), 0) 
 q.discription
from questions q
join question_options qo on q.qid=qo.qid

【讨论】:

    【解决方案3】:

    查询应如下所示

    $query = SELECT * FROM questuons LEFT JOIN question_options ON questuons.qid=question_options.qid where question_options.correct_answer= '1'";
    

    php 代码应该如下所示

    $result = $DBconn->query($query );
    while($row=$result->fetch_array()) {
      echo $row['q_text'];
    } 
    

    试试上面的。希望它会起作用。

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多