У меня есть две таблицы 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.
}
}
Мне это кажется очень неуклюжим, поскольку я думаю, что можно получить данные только одним SQL-запросом, используя INNER JOIN для совпадения идентификатора ... Я просто не смог этого сделать. Вы можете помочь? Имейте в виду, что в моей базе данных есть несколько опросов.
Редактировать: спасибо за ответы до сих пор. Я ценю помощь. Но я плохо объяснил вопрос. Можно ли получить все опросы со всеми ответами в массиве или объекте, используя только один SELECT
. В ответах вы использовали переменную $tmp
, которая уже взята из предыдущего запроса. Так можно ли это сделать или я не получаю ответы?