我有一个表用户,其中包含正常的用户详细信息字段,例如姓名、国家/地区、城市等。在提交此表单后,我有一组关于用户对特定技术的兴趣的问题。用户可以回答零个、一个或多个答案。我将这些答案保存在 user_answers 表中,其中包含列 - id 、 user_id 、 question_id 和答案。
user table structure
id - int - auto increment
name - varchar
country - varchar
city - varchar
user_answer table structure
id - int - auto increment
user_id - int
question_id - int
answer - varchar
现在我的任务是将所有用户导出到用户给出的答案的 excel 表中。为此,我正在尝试使用最少的 sql 查询获取具有给定答案的用户数据。数据应采用以下数组格式:
$data = Array ( [0] => Array ( [id] => 1 , [name] => abc , [city] => xyz ,
answer => Array( [0] => Array ( [question_id] => 1 , [answer] => aaa)
[1] => Array ( [question_id] => 3 , [answer] => bbb)
[2] => Array ( [question_id] => 4 , [answer] => ccc)
))
[1] => Array ( [id] => 2 , [name] => def, [city] => zxy,
answer => Array( [0] => Array ( [question_id] => 1 , [answer] => vvv)
[1] => Array ( [question_id] => 2 , [answer] => bbb)
))
[2] => Array ( [id] => 3 , [name] => ghi, [city] => xyz ,
answer => Array( [0] => Array ( [question_id] => 1 , [answer] => rrr)
[1] => Array ( [question_id] => 2 , [answer] => sss)
[2] => Array ( [question_id] => 3 , [answer] => ggg)
)) )
任何人都可以帮助我用最少的 sql 查询来实现这个结果。我有一个选项是首先找到所有用户,然后在 foreach 中使用另一个 mysql 查询来查找用户给出的与其 user_id 对应的答案,然后将其推送到前一个数组结果中。但是在这种情况下,大量用户正在执行大量查询。任何人都可以提出任何更好的解决方案。