小编Nar*_*_CH的帖子

在 MySql 中显示月度考勤报告

我正在使用 Mysql DB 在 php 中做一个学校管理系统。我被困在我的项目中。请任何人建议我做错了什么。

我的数据库中有两个表;一个是存储Students记录,另一个是attendance明智地存储他们的日常

现在我想显示当月特定班级所有学生的报告,无论他们在场还是缺席。但我只在出勤表中捕获缺席学生的详细信息。

我写了 sql 查询来显示这里的结果是:

SELECT tab.class, attend, DATE, ta.rollno, ta.StdNm 
FROM tbl_absentees tab, tbl_admission ta
WHERE ta.Cls = class
  AND ta.rollno = tab.rollno
  AND class =22
  AND attend =  'A'
  AND DATE =  '2013-06-07';
Run Code Online (Sandbox Code Playgroud)

结果是:

Class Attend RollNo StudentName
Run Code Online (Sandbox Code Playgroud)

但我想以 31 天的表格方式显示,如果出席=A 显示 A 表示缺席天数,否则显示“P”表示剩余天数

我怎样才能在mysql中做到这一点?任何人都可以建议/给我一个想法来实现这一目标。

对不起,我的问题有误。实际上,我想显示特定月份的出勤报告,其中数据来自两个表:

  • 第一个表由 StudentName、RollNo、Class 组成
  • 第二个表由日期、状态、滚动编号、类别组成

现在我想显示象报告这样

mysql pivot

8
推荐指数
1
解决办法
4万
查看次数

如何加入两个结果集以查询来自两个语句的输出

我有两个查询查询 1:

SELECT 
    e.eid, e.item as 'ITEM', SUM(s.qty) as 'TOTAL SOLD'
from
    tbl_sales s,
    tbl_matentry e
WHERE
    e.eid = s.item
GROUP By e.eid ;
Run Code Online (Sandbox Code Playgroud)

结果 1:

+---------+-------------+---------------+
|     eid |    ITEM     |  TOTAL SOLD   |
+---------+-------------+---------------+
|       1 | rupa        |             5 |
|       2 | pan america |             3 |
|       3 | John Player |            10 |
|       4 | classmate   |            11 |
|       5 | lepakshi    |            55 |
|       6 | lee         |            14 | …
Run Code Online (Sandbox Code Playgroud)

mysql

6
推荐指数
2
解决办法
9万
查看次数

如何在mysql中将行转置/转换为列

我的表结构如下图所示 主题表

      +----+------+------+--------+---------+
      | id | C_Id | G_Id | status | subject |
      +----+------+------+--------+---------+
      |  1 |   13 |    4 |      1 | Telugu  |
      |  2 |   13 |    4 |      1 | Hindi   |
      |  3 |   13 |    4 |      1 | English |
      |  4 |   13 |    4 |      1 | Maths   |
      |  5 |   13 |    4 |      1 | Physics |
      |  6 |   13 |    4 |      1 | Biology …
Run Code Online (Sandbox Code Playgroud)

mysql

4
推荐指数
1
解决办法
6万
查看次数

带有动态列的 Select 语句,其中这些列是另一个表中的行

我想写一个带有一些固定列和动态列的选择语句。这里的动态列名称是另一个表中的行。

我试过这个,但得到错误。请告诉我我的错误在哪里

set @sql=(Select subject from tbl_subjects where C_Id=22);
SELECT 
    ta.rollno,
    ta.StdNm,
    tc.C_Name,
    @sql
FROM
    tbl_cmarks tm,
    tbl_admission ta,
    tbl_classes tc
WHERE
    tm.Cid = tc.C_Id
        AND ta.rollno = tm.rollno
        AND tm.Cid = 22 and tm.Examid=9 
Run Code Online (Sandbox Code Playgroud)

Mysql 显示:

错误代码:1242。子查询返回多于 1 行

谁能告诉我如何在mysql中做到这一点?

mysql

3
推荐指数
1
解决办法
5万
查看次数

如何更改从 mysql 生成的报告的特定日期的值

我正在 mysql 中生成出勤报告,通过从 3 个表中提取数据,例如从招生表中提取学生姓名和卷号,缺席表中的缺席详细信息,并且我创建了一个日历表来生成所需的输出我可以在这里生成输出我的数据库和我生成的结果。SQL小提琴

现在我想将表中出现“SUN”的任何位置显示为“S”,并且如果报告中有任何假期日期,则应将它们显示为“H”。

谁能告诉我在查询中我应该怎么做才能产生预期的结果?

我的数据:

CREATE TABLE tbl_admission
    (`StudentName` varchar(5), `RollNo` int, `Class` int)
;

INSERT INTO tbl_admission
    (`StudentName`, `RollNo`, `Class`)
VALUES
    ('Naren', 1, 22),
    ('Srinu', 2, 22),
    ('Blah', 3, 22)
;

CREATE TABLE tbl_absentees
    (`Date` datetime, `Status` varchar(1), `RollNo` int, `Class` int)
;

INSERT INTO tbl_absentees
    (`Date`, `Status`, `RollNo`, `Class`)
VALUES
    ('2013-06-01 00:00:00', 'A', 1, 22),
    ('2013-06-02 00:00:00', 'A', 1, 22),
    ('2013-06-03 00:00:00', 'A', 1, 22),
    ('2013-06-04 00:00:00', 'A', 1, 22),
    ('2013-06-05 00:00:00', 'A', 1, …
Run Code Online (Sandbox Code Playgroud)

mysql

1
推荐指数
1
解决办法
1055
查看次数

如何在 GROUP_CONCAT 中做聚合函数

我正在生成一份报告以显示未结费用,例如哪种费用类型,该费用类型的固定金额,该费用类型支付的金额以及最终该费用类型支付的余额金额。

在这里,我从 5 个表中提取数据,例如来自 Classes 表的 Class Names、来自招生表的 Roll no & Student Name、来自 Feevars 表的 Fee Types、来自 studentfees 表的费用类型固定金额,以及最后从费用收集表中为费用类型支付的金额.

我可以通过加减运算在 select 语句中提及费用类型名称来生成部分结果。

这是完整的数据库和我的查询产生的结果。请在此演示中查看 **@我的查询,在选择语句中我手动提到了费用类型。但是我想生成结果而不将费用类型作为列名。

为此,我做了一件事,我将所有费用类型都放入了这样的 sql 变量中

set @sqlList = null;SELECT GROUP_CONCAT(concat('tsf.', Replace(FeeName,' ',''))) INTO @sqlList FROM tbl_feevars;
Run Code Online (Sandbox Code Playgroud)

这将导致所有费用类型成为单行作为列名。最后,我编写了代码来生成我所期望的输出,但是我收到了类似错误代码 1064:您的 sql 语法错误。

这是我的最终代码

预期输出代码

请任何人告诉我,我的 sql 查询有什么错误。并建议我,如果有的话??其他方式来做这个报告。

我的表:

CREATE TABLE `tbl_admission` (
  `AdmNo` varchar(50) NOT NULL,
  `Grp` varchar(45) NOT NULL,
  `Cls` varchar(45) NOT NULL,
  `rollno` int(11) NOT NULL,  
  `StdNm` varchar(50)
);

CREATE TABLE `tbl_classes` ( …
Run Code Online (Sandbox Code Playgroud)

mysql

0
推荐指数
2
解决办法
5808
查看次数

标签 统计

mysql ×6

pivot ×1