当前位置:  开发笔记 > 编程语言 > 正文

如何对表示具有多个答案的民意调查的两个表使用一个查询?

如何解决《如何对表示具有多个答案的民意调查的两个表使用一个查询?》经验,为你挑选了1个好方法。

我有两个表pollpoll_answers,它们代表一个民意调查以及从民意调查中回答问题的选项.EX:

我在SQL上很差吗?

是的你是

改变工艺

以及共同回应的表格:

轮询

pollID pollQuestion

 1 | Am I poor at SQL?

poll_answers

pollAnswerID pollAnswerText pollID

  1 | yes | 1

  2 | yes, you do | 1

  3 | change craft | 1

这就是我获取数据的方式:

$polls=$db->get_results("SELECT pollID, pollQuestion FROM poll",ARRAY_A);
    foreach ($polls as $poll_field)
    {
        $poll['id']=$poll_field['pollID'];
        $poll['question']=$poll_field['pollQuestion'];
        $tmp=$poll['id'];
        //answers
        $answers=$db->get_results("SELECT pollAnswerID, pollAnswerText FROM poll_answers WHERE pollID='$tmp'",ARRAY_A);
            {
            //and so on , I think you get the idea.
            }


    }

它对我来说看起来非常笨拙,因为我认为在ID匹配时使用INNER JOIN只能使用一个SQL查询获取数据...我就是无法做到这一点.你能帮我吗?请记住,我的数据库中有多个民意调查.


编辑:谢谢你到目前为止的答案.我很感激帮助.但我没有很好地解释这个问题.是否有可能只使用一个数组或对象中的所有答案获得所有轮询SELECT.在目前为止的答案中,您使用了$tmp已从先前查询中获取的变量.那么有可能做到这一点还是我没有得到答案?



1> Quassnoi..:
SELECT pollQuestion, pollAnswerID, pollAnswerText
FROM   poll_answers pa, poll p
WHERE  p.pollID='$tmp'
       AND pa.pollId = p.pollID

或者,如果您更喜欢INNER JOIN语法,

SELECT pollQuestion, pollAnswerID, pollAnswerText
FROM   poll p
INNER JOIN
       poll_answers pa
ON     pa.pollId = p.pollID
WHERE  p.pollID='$tmp'

要获取数组中的eveything,您可以使用:

SELECT  -1, pollQuestion
FROM    poll p
WHERE   p.pollID = @pollID
UNION ALL
SELECT  pollAnswerID, pollAnswerText
FROM    poll_answers pa
WHERE   pa.pollID= @pollID

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有