学期表term,字段如下:
- id_term
- first_school_year(2012-2013学年则存储2012)
- session(上下学期分别为1和2)我希望能得到整个学期的字符串,例如给出某个id_term,得到“2012-2013第2学期”这个字符串于是使用建立视图的方法实现了:
create view `full_term_name` as
select
`term`.`id_term` as `id_term`,
concat( `term`.`first_school_year`,
'-',
`term`.`first_school_year` + 1,
'第',
`term`.`session`,
'学期'
) as `full_term_name`
from `term`
现在问题是有了另一个需求又有一个批次表batch,字段如下
- id_batch
- id_term(外键,引用自term.id_term)
- batch_start_week(批次开始时的周)
现在想给出id_batch,得到字符串“2012-2013第2学期第6周开始的那批”
也就是想要创建一个视图,它能够通过batch.id_term,查询到full_term_name视图中的学期全称,再与batch表中的内容组合。
我对mysql不熟,不知道如何创建这样的视图?

解决方案 »

  1.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  2.   

    我是MySQL 5。把数据绑定到C# winform的DataGridView,直接显示和编辑数据表,所以,没有用多少SQL语句。第一个表是学期表term,字段如下:
    - id_term(pk)
    - first_school_year(2012-2013学年则存储2012)
    - session(上下学期分别为1和2)
    这个表的显示就是直接select * from term第二个表是批次表batch,字段如下:
    - id_batch(pk)
    - id_term(外键,引用自term.id_term)
    - batch_start_week(批次开始时的周)
    这个表的显示是直接select * from batch。
    但是id_term是外键,为了让id_term列的编辑更直观,所以让用户用comboBox来选择。comboBox的内容来自full_term_name这个视图。full_term_name视图首先保留了一个id_term字段,另一个full_term_name字段则组合了term表的两个字段。例如,当first_school_year是2012,session是2,则full_term_name字段组合为文字“2012-2013第2学期”。
    代码如下:
    create view `full_term_name` as
    select
        `term`.`id_term` as `id_term`,
        concat( `term`.`first_school_year`,
            '-',
            `term`.`first_school_year` + 1,
            '第',
            `term`.`session`,
            '学期'
        ) as `full_term_name`
    from `term`第三个表是班级表class,字段如下:
    - id_class(pk)
    - id_batch(外键,引用自batch.id_batch)
    - name(班级名称)
    跟第二个表的显示方法一样select * from class。我想让id_batch可以通过comboBox来选择,只不过,这次comboBox的显示文字更复杂一些。我希望建立一个名为full_batch_name视图,它需要batch表的batch_start_week字段的值,以及full_term_name视图的值,一起组合为一个长文字。
    例如,当batch_start_week的值是5,那么组合为文字“2012-2013第2学期第5周开始的那批”。
    “2012-2013第2学期第5周开始的那批”这样的文字该如何用视图组合出来呢?