我有两个表poll和poll_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
已从先前查询中获取的变量.那么有可能做到这一点还是我没有得到答案?
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