首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将此SQL语句转换为Laravel ORM

将此SQL语句转换为Laravel ORM
EN

Stack Overflow用户
提问于 2019-04-01 00:46:53
回答 1查看 53关注 0票数 -1

我如何在Laravel ORM中做到这一点?

代码语言:javascript
复制
SELECT
    s.id,
    s.name AS NAME,
    COALESCE(su.cnt, 0) AS SUBJECTs,
    COALESCE(e.marks, 0) AS MARKS
FROM student s
LEFT JOIN
(
    SELECT student_id, COUNT(*) AS cnt
    FROM subject
    GROUP BY student_id
) su
    ON s.id = su.student_id
LEFT JOIN
(
    SELECT student_id, SUM(mark) AS marks
    FROM exam
    GROUP BY student_id
) e
    ON s.id = e.student_id;

我想把学生和科目、学生和考试结合起来。当我加入第三个表时,问题就发生了,它复制了结果。

EN

回答 1

Stack Overflow用户

发布于 2019-04-01 01:21:28

这是

代码语言:javascript
复制
DB::table('student as su')->selectRaw("
  su.id,
  su.name,
  COALESCE(su.cnt, 0) as SUBJECTS,
  COALESCE(e.marks, 0) as MARKS
")->leftJoin(DB::raw("(
  SELECT student_id, COUNT(*) AS cnt
  FROM subject
  GROUP BY student_id
) su"), 's.id', '=', 'su.student_id')
->leftJoin(DB::raw("(
  SELECT student_id, SUM(mark) AS marks
  FROM exam
  GROUP BY student_id
) e"), 's.id', '=', 'e.student_id')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55443146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档