- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 mySQL 中有五个表,我正在研究学生费用模块,但我在查询时遇到了一些问题,所以我无法获得适当的结果,所以请帮助我,如果你能给我一些反馈,我将不胜感激在此查询上。
1.a )class_details 表创建
CREATE TABLE `class_details`
(`class_id_pk` int(11) NOT NULL AUTO_INCREMENT
,`class_name`varchar(200) NOT NULL
,`session` varchar(50) DEFAULT NULL
,`class_status` varchar(50) DEFAULT NULL
,PRIMARY KEY (`class_id_pk`)
,UNIQUE KEY `UNIQUE` (`class_name`,`session`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
1.b) class_details 插入
insert into `class_details`
(`class_id_pk`,`class_name`,`session`,`class_status`)
VALUES
(1,'1st','2016-2017',NULL)
,(2,'2nd','2016-2017',NULL)
,(3,'3rd','2016-2017',NULL);
2.a) feedetails表创建
CREATE TABLE `feedetails`
(`section_id_fk` int(50) NOT NULL
,`fees` varchar(30) DEFAULT NULL
,PRIMARY KEY (`section_id_fk`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
2.b) feedetails 插入
insert into `feedetails`(`section_id_fk`,`fees`)
values
(1,'1000')
,(2,'2000')
,(3,'3000')
,(4,'4000')
,(5,'5000')
,(6,'6000');
3.a) section_details 创建
CREATE TABLE `section_details`
(`section_id_pk` int(11) NOT NULL AUTO_INCREMENT
,`class_id_fk` int(11) NOT NULL
,`section_name` varchar(50) NOT NULL
,`section_status` varchar(50) DEFAULT NULL
,PRIMARY KEY (`section_id_pk`,`class_id_fk`,`section_name`)
,UNIQUE KEY `UNIQUE` (`class_id_fk`,`section_name`)
,CONSTRAINT `FK_section_details` FOREIGN KEY (`class_id_fk`) REFERENCES `class_details` (`class_id_pk`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
3.b) section_details 插入
insert into `section_details` (`section_id_pk`,`class_id_fk`,`section_name`,`section_status`)
values
(1,1,'A',NULL)
,(2,2,'A',NULL)
,(3,3,'A',NULL);
4.a) student_fee
CREATE TABLE `student_fee`
( `sr_no` int(200) NOT NULL AUTO_INCREMENT
,`scholar_no`int(50) NOT NULL
,`paid_amount` int(200) DEFAULT NULL
,`due_amount` int(200) DEFAULT NULL
,`fee_date` date DEFAULT NULL
,`section_id_fk` int(50) DEFAULT NULL
,PRIMARY KEY (`sr_no`)
,KEY `FK_student_fee`(`section_id_fk`)
,CONSTRAINT `FK_student_fee` FOREIGN KEY (`section_id_fk`) REFERENCES `section_details` (`section_id_pk`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
4.b) student_fee 插入
insert into student_fee` (`sr_no`,`scholar_no`,`paid_amount`,`due_amount`,`fee_date`,`section_id_fk`)
values
(3,5,800,200,'2016-06-16',1)
,(4,29,1000,0,'2016-06-16',1)
,(5,5,200,0,'2016-06-16',1);
5.a) student_details 创建
CREATE TABLE `student_details`
(`scholar_no` int(30) NOT NULL
,`fname` varchar(30) DEFAULT NULL
,`lname` varchar(30) DEFAULT NULL
,`stu_class` varchar(30) DEFAULT NULL
,`rte` varchar(30) DEFAULT NULL
,`active` varbinary(10) DEFAULT NULL
,PRIMARY KEY (`scholar_no`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
5.b) student_details 插入
insert into `student_details` (`scholar_no`,`fname`,`lname`,`stu_class`,`rte`,`active`)
values
(5,'KP','PK','1','N','y')
,(29,'Abc','Xyz','1','N','y');
上面我已经提到了用于此查询的所有表详细信息。第一次在 student_details 表 stu_class=1 中,费用为 1000。当我在 student_fee 中插入一些值并使用我的查询时,结果是正确的,但是当我在 student_fee 中插入一些金额给另一个学生时,查询添加了支付金额对于不正确的同一个学生,我想显示那些实际插入的学生的插入费用..
SELECT
student_details.scholar_no
,student_details.fname
,student_details.lname
,student_details.stu_class
,feedetails.fees
,class_name
,section_name
,IF(sssf.paid_amount IS NULL,0,sssf.paid_amount) AS paid_amount
FROM
(student_details
LEFT OUTER JOIN feedetails
ON student_details.stu_class = feedetails.section_id_fk
)
LEFT OUTER JOIN
(SELECT
scholar
, SUM(pa) AS paid_amount
, SUM(pva) AS prev_paid_amount
,SUM(da) AS due_amount
, SUM(dva) AS prev_due_amount
,section_id_fk
,fee_date
,stu_class
FROM
(SELECT
scholar
,CASE WHEN section_id_fk = stu_class THEN paid_amount ELSE 0 END AS pa
,CASE WHEN section_id_fk != stu_class THEN paid_amount ELSE 0 END AS pva
,CASE WHEN section_id_fk = stu_class THEN due_amount ELSE 0 END AS da
,CASE WHEN section_id_fk != stu_class THEN due_amount ELSE 0 END AS dva
,due_amount
,paid_amount
,section_id_fk
,fee_date
,stu_class
FROM
(SELECT
scholar
,due_amount
,SUM(paid_amount) AS paid_amount
,section_id_fk
,fee_date
FROM
(SELECT
student_fee.due_amount AS due_amount
,student_fee.paid_amount AS paid_amount
,student_fee.scholar_no AS scholar
,section_id_fk
,fee_date
FROM student_fee
ORDER BY STR_TO_DATE(fee_date,'%Y-%m-%d')DESC
) AS kkk
GROUP BY kkk.scholar,section_id_fk ORDER BY scholar
) AS k
LEFT OUTER JOIN student_details sd
ON k.scholar = sd.scholar_no
) AS lk
) AS sssf
ON student_details.scholar_no = sssf.scholar
LEFT OUTER JOIN
(SELECT *
FROM section_details AS sd
LEFT OUTER JOIN class_details cd
ON sd.class_id_fk = cd.class_id_pk
) AS sc
ON student_details.stu_class = sc.section_id_pk
WHERE student_details.active = 'y' AND rte = 'N'
最佳答案
复杂的查询。不幸的是有缺陷。
首先,您可以从子查询中删除所有 ORDER BY
子句。子查询只是返回无序集,因此无论它们是否包含 ORDER BY
子句都没有影响(除了可能给 DBMS 带来不必要的工作)。
最里面的子查询 (kkk) 没有 WHERE
子句,也没有 GROUP BY
子句,所以你也可以直接从 student_fee
中选择.
下一个子查询 (kk) 按 scholar
和 section_id_fk
分组,但是你选择了 due_amount
和 fee_date
而没有任何聚合。这为您提供了任意选择的值。不应该是 sum(due_amount)
或 max(due_amount)
之类的吗?
然后在 sssf 子查询中没有 GROUP BY
子句。这只为您提供了一个结果行。但是您选择了未聚合的 scholar
、section_id_fk
、fee_date
、stu_class
,因此您再次获得任意选择的值,例如诸学者之一。
检查所有聚合。这可能有助于设置 ONLY_FULL_GROUP_BY
模式,以避免错误。
关于mysql - Left Outer Join (MySQL) 问题,这个查询有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37856911/
class Outer { class Inner { } } public class Demo { public static void main(
不确定我是否明白这一点,但我从 pyLint 收到验证错误说: Redefining name 'a' from outer scope (line 443) (redefined-outer-nam
我是 SQL 新手,最近开始在我的代码中实现联接,我希望检索的数据可以使用以下 SQL 语句来完成。但是,如您所知,SQLite3 不支持 RIGHT OUTER 和 FULL OUTER JOIN。
怀疑但不确定:是 FROM 中表格的简单列表-clause 根据定义是完全连接? SELECT * FROM table1, table2 我们在参数不相等的情况下连接表的情况是否是完全外连接的实现?
我想知道 numpy 中是否有一个功能与 np.outer 类似,但使用二维数组和向量作为输入参数。结果应该是一个 3 维数组。 例如,如果我有一个矩阵 M 和一个向量 v,我想将原始矩阵 M 堆叠
以下代码在 MSVC 上编译: #include class Bob { int a; friend class Outer; }; class Outer {
Spark SQL 文档指定 join()支持以下连接类型: Must be one of: inner, cross, outer, full, full_outer, left, left_out
谁能帮我解决以下问题.. 这里我们有1.左外连接2.两个右外连接 如何结合左右 O.J 并创建与上面相同的效果, 我需要重写相同的查询,这是因为我正在将旧的 ms SQL2009 转换为 ms SQL
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
使用 ANSI 语法的 Informix 查询性能是否有差异: SELECT .. LEFT OUTER JOIN some_table ON () LEFT OUTER JOIN some_
根据clang , gcc 和 vs2013,函数 Outer::f 是 not 类 Outer::Inner 的 friend 。 struct Outer { void f() {}
换句话说,对于嵌套/多个 JOIN SQL 语句,是否应该始终首先使用 INNER JOIN(要么将其放在顶部行或通过使用括号首先 INNER JOIN 两个表)并确保它在任何 OUTER JOIN
我们有以下查询。使用 LEFT OUTER 连接需要 9 秒才能执行。将 LEFT OUTER 更改为 LEFT INNER 可将执行时间减少到 2 秒,并且返回相同行数。由于无论连接类型如何,都正在
为什么在实例化通用外部类(连同内部类)时使用菱形运算符会在代码段 2 中产生错误,而代码段 1 却完全没问题? 我知道稀有类型是被禁止的,但我的情况不是稀有类型——在稀有类型中,外部和内部都是通用的,
我有 4 个表,如下所示。 表:类 ClassID | ClassSTD -------------------------------- 1 | STD-1 2
是否有关于“外部 =>”功能的文档?它看起来像一个带有推断类型的自类型注释。然而我有一种感觉,我错了。 如果是这样,是否只是表达对 super 的访问的不同方式? ? trait A extends
我有 2 个表 users 和 orders,我想获取 users 和他的订单数 SELECT `users`.*, `orders`.*,count(*) FROM `users` LEFT JOI
我有一个非常古老的 informix 过程,我想在我的新 PostgreSQL 数据库中使用它。我是 Postgres 的新手,我觉得连接很不一样。 这是我的旧 Informix 代码的一部分: CR
我非常擅长 SQL 语句,希望能得到一点帮助。我发现我需要对其中一些表使用 OUTER 联接,但 MySQL 没有该功能。 SELECT validclick.Campaign
对,这有点令人困惑,我不确定通过 sql 是否可行。 我的第一个表叫做成员,我目前有这个 user:ID type: firstname: lastname: 这是表中的数据 members tabl
我是一名优秀的程序员,十分优秀!