Php Laravel中的单查询

Php Laravel中的单查询,php,mysql,sql,laravel,laravel-5,Php,Mysql,Sql,Laravel,Laravel 5,如何在laravel/mysql/php单次查询中计算(分数/问题号) +=============+ +=============+ +===============+ | User | | Taken | | Answers | +=============+ +=============+ +===============+ | id | | taken_id | |

如何在laravel/mysql/php单次查询中计算(分数/问题号)

+=============+     +=============+    +===============+
|    User     |     |    Taken    |    |    Answers    |
+=============+     +=============+    +===============+
|     id      |     |   taken_id  |    |   answer_id   |
+-------------+     +-------------+    +---------------+
|     name    |     | user_id(FK) |    |  taken_id(FK) |
+-------------+     +-------------+    +---------------+
                    |  taken_date |    |  question_id  |
                    +-------------+    +---------------+
                                       |     choice    |
                                       +---------------+
                                       |      score    |
                                       +---------------+
我尝试了以下内容:(我从两张表中获得了用户id的分数并回答了问题)


但是如何在此查询中使用用户表详细信息

您可以向用户表添加联接以获取用户表的详细信息

select u.id,
       u.name,
       a.score 
from (
    select max(taken_id) as taken_id, 
    user_id 
    from taken 
    group by user_id
) t
join answers a on t.taken_id = a.taken_id 
join user u on u.id = t.user_id
where a.score is not null
要获得每个用户的总分,可以使用以下命令

select u.id,
       u.name,
       sum(a.score) score
from (
    select max(taken_id) as taken_id, 
    user_id 
    from taken 
    group by user_id
) t
join answers a on t.taken_id = a.taken_id 
join user u on u.id = t.user_id
where a.score is not null
group by u.id,u.name
你可以试试-

DB::raw('select a.user_id, answers.score from (select max(taken.taken_id) as taken_id, taken.user_id from taken group by taken.user_id) a, answers where a.taken_id = answers.taken_id and answers.score is not null
');

确保已导入DB类。

谢谢我Khalid Junaid。。还有一个问题:我得到的结果是这样的:id姓名分数采取了\u id 28 John Doe 12 36 28 John Doe 12 36 28 John Doe 10 36 28 John Doe 15 36 37 sssss 12 38如何计算每个用户的分数总和(28/37)Thansk@m khalid junaid我不能这样做:总和(a.分数)分数,因为分数有逗号分隔的分数(2,3)我想我只能在(laravel)php中使用
DB::raw('select a.user_id, answers.score from (select max(taken.taken_id) as taken_id, taken.user_id from taken group by taken.user_id) a, answers where a.taken_id = answers.taken_id and answers.score is not null
');