我有三张表 班级,专业,系部
bj                       zy                        xb
               
bj_id (主键)             zy_id(主键)             xb_id
bj_name                  zy_name                 xb_name
xb_id                    xb_id
怎样实现通过选择专业(zy-name) 
得到相对应的班级(bj_name)?
我不想在表bj里加上专业id(zy_id)

解决方案 »

  1.   

    select distinct * from bj
    inner join zy 
    on bj.xb_id = zy.xb_id and zy.zy-name = 'zyName'不知道是不是这样子
      

  2.   

    select bj_name from bj where xb_id in (select xb_id from zy where zy_name = @zy_name)
      

  3.   

    晕了 写不下去了 看不懂
    bj_id (主键) zy_id(主键) xb_id
    bj_name zy_name xb_name
    xb_id xb_id这两个Xb_id 是哪个表里的啊  我按你的排列理解的bj_id (主键)  zy_id(主键)   xb_id
    bj_name    zy_name       xb_name
    xb_id     xb_idselect bj_name from bj where xb_id in (select xb_id from zy where zy_name='XXXXX'  )
      

  4.   

    select distinct bj.* from bj
    inner join zy 
    on bj.xb_id = zy.xb_id and zy.zy-name = 'zyName'
      

  5.   

    select  distinct bj_name from bj where xb_id in (select xb_id from zy where zy_name = @zy_name)
      

  6.   

    感觉表结构有些问题:
    比如电子系有4个专业:电子信息工程、通讯工程、电子科技、测控工程。
    电子信息、通讯工程各5个班,电子科技、测控各3个班。这每个年级16个班都直接归到系里怎么知道哪个专业里有哪些办
    估计可以找出来的办法是根据班级名称(bj_name)里一般都回含有专业名称(zj_name)
    可以用:
    select distinct * from bj where bj_name like @zy_name+ '%'
      

  7.   

    select distinct bj.* from bj
    inner join zy 
    on bj.xb_id = zy.xb_id and zy.zy-name = 'zyName'