在附表中分组日

时间:2015-01-28 17:34:59

标签: php html mysql

请帮助我,我有一个问题来设计这个日程表。这是我目前的设计 https://www.dropbox.com/s/wcyqgkk7i0bm2cz/%202015-01-29%2000-19-46.png?dl=0并且我不知道如此https://www.dropbox.com/s/5ppchqypixix3no/result.jpg?dl=0

这是我的查询

SELECT a.*, b.`nama_kelas`, `c`.`nama_hari` FROM `tbl_jadwal` AS `a`
LEFT JOIN `tbl_kelas` AS `b` ON a.`id_kelas` = b.`id_kelas`
LEFT JOIN `tbl_hari` AS `c` ON a.`id_hari` = c.`id_hari`
ORDER BY `a`.`id_kelas`,a.`id_hari`,a.`id_jam_pel`,a.`kode_guru`,a.`id_mapel`

希望如果有人也可以帮助我使用CSS。但最重要的是将这一天分组(对不起,当天的名字语言是印度尼西亚语)。

你可以查看我的SQLfiddle:http://sqlfiddle.com/#!2/1837f

请帮帮我。谢谢

1 个答案:

答案 0 :(得分:1)

您尝试做的事情无法直接使用SQL完成。它不能像这样划分行。

最好的办法是将其分成多个查询,如下所示:

获取时间表:sqlfiddle

SELECT 
       h.id_hari,
       jp.jam_pel,
       g.nama_lengkap
FROM   tbl_jadwal j 
       LEFT JOIN tbl_kelas k
              ON j.id_kelas = k.id_kelas
       LEFT JOIN tbl_hari h 
              ON j.id_hari = h.id_hari
       LEFT JOIN tbl_jam_pel jp
              ON j.id_jam_pel = jp.id_jam_pel
       LEFT JOIN tbl_guru g
              ON j.kode_guru = g.kode_guru
ORDER  BY k.id_kelas, 
          h.id_hari, 
          jp.id_jam_pel, 
          j.kode_guru, 
          j.id_mapel

下一个让您知道每天有多少小时块。如果您愿意,也可以通过循环和计数在代码中执行此操作。唯一的限制是在输出循环开始之前就知道了这个数字。这意味着如果你在代码中执行此操作,则需要两个循环。一个计数,然后一个显示。

我已经把所有的JOINS留在了这里,因为我不知道你想要展示的所有约束。如果您愿意,可以删除它们,但这样可以确保只计算上述计划的行数。

获取每天设置的小时数:sqlfiddle

SELECT 
       h.id_hari,
       h.nama_hari,
       COUNT(h.id_hari) AS jam_untuk_hari
FROM   tbl_jadwal j 
       LEFT JOIN tbl_kelas k
              ON j.id_kelas = k.id_kelas
       LEFT JOIN tbl_hari h 
              ON j.id_hari = h.id_hari
       LEFT JOIN tbl_jam_pel jp
              ON j.id_jam_pel = jp.id_jam_pel
       LEFT JOIN tbl_guru g
              ON j.kode_guru = g.kode_guru
GROUP BY h.id_hari

你需要做同样的事情来获得每节课的小时数。

接下来,要正确显示,您将使用rowspan元素的td属性。这是一些伪代码:

FOR hour in hours
    IF is first row of day THEN OUTPUT:
        <td rowspan="NUMBER_OF_HOURS_IN_DAY">NAMA_HARI</td>

    OUTPUT:
    <td>JAM</td>
    <td>NAMA_GURU</td> <!-- Here's where you'll need to do the same thing as above -->

rowspan属性允许您按照您的意图对事物进行分组。

最终结果如下:

<table>
    <tr>
        <td rowspan="3">1</td>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>