【发布时间】:2019-03-31 16:46:53
【问题描述】:
如何在 Laravel ORM 中做到这一点?
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;
我想加入 STUDENT 和 SUBJECT、STUDENT 和 EXAM。当我加入第三个表时出现问题,它重复了结果。
【问题讨论】:
-
添加“按 s.id 分组”。通过添加此查询,您将获得单个记录而不是重复记录
-
这肯定是一个简单的SQL问题吗?我应该考虑编辑标签。
-
你有没有为这些表设置 eloquent 模型?
-
是的,@RossWilson
-
Student->Subject和Student->Exam之间有没有建立关系?