我有2个表return Author::with(['books' => function($query) {
$query->scope();
}
和class
。
这是grade
表中的示例行:
class
这是C_NAME....C_TIME...F_NAME..C_ROOM...SEMESTER
INSS300...M5:30....DWIGHT..219BC....FALL11
INSS300...T5:30....KEEN....216BC....FALL11
MKT300....M5:30....Lee.....112BC....SP11
MKT300....W5:30....Lee.....112BC....SP11
INSS421...T5:30....CORY....212BC....FALL11
FIN300....TH5:30...KEEN....219BC....FALL11
INSS300...W5:30....CORY....219BC....FALL11
INSS300...F5:30....CORY....216BC....FALL11
INSS422...F5:30....KEEN....219BC....FALL11
表
grade
我必须回答的问题是:
假设这些表位于您的帐户Ordb002中。你需要阅读 只允许所有三张桌子给你的小组成员Sally 帐户是Ordb009。假设您已获得Sally的读取权限 所有表格。莎莉想要得分(即A,B,C等)。 由教师和课程。为SALLY写一个查询来计算。
我提出了这个问题
S_NAME C_NAME G
LARRY....INSS300....B
LARRY....FIN300.....A
SONY.....INSS300....C
SONY.....INSS421....C
GRAY.....INSS300....C
GRAY.....INSS421....D
TRUDY....INSS300....B
DRUM.....INSS421....A
DRUM.....FIN300.....B
PURI.....INSS422....C
APPLE....INSS422....C
LARRY....INSS422....C
LARRY....INSS300....B
SONY.....INSS300....C
GRAY.....INSS300....C
TRUDY....INSS300....B
这给了我以下输出:
select cla.f_name
, gra.c_name
, count(grade)
, grade
from class1 cla
, grade1 gra
where cla.c_name=gra.c_name
group by cla.f_name
, gra.c_name
, grade
order by cla.f_name
, gra.c_name;
我不知道为什么4b和4 c出现在输出的顶部,当可能性只有2b和2 c时。
有什么建议吗?
答案 0 :(得分:0)
这是因为在你的类表中你有c_name和f_name的“重复”行,例如:
C_NAME C_TIME F_NAME C_ROOM SEMESTER
--------- -------- ------- ------- --------
INSS300 W5:30 CORY 219BC FALL11
INSS300 F5:30 CORY 216BC FALL11
INSS300成绩表中的每一行都将与这些行匹配,从而导致计数翻倍。
因此,如果您的成绩表还没有记录该课程的时间,那么您将必须过滤您的班级表,以便每个c_name和f_name只显示一行。
或者,您可以先在成绩表中对行进行分组,然后将它们连接回类表,如果您仍然需要显示两行(尽管我认为这不是解决问题的正确方法)你正试图解决。)