1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

MSSQL如何一次查找26个表?

本帖由 BoBo2005-10-23 发布。版面名称:后端开发

  1. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    现在数据库里有26个表,表里的字段都是一样的,只是数据不一样,要写26个语句?
     
  2. 亚马逊的雨季

    亚马逊的雨季 New Member

    注册:
    2005-09-05
    帖子:
    1,984
    赞:
    12
    你该不是按照26个字母来分的吧?

    需要查询什么样的数据呢?
     
  3. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    如:学校有26个班,每个班一个表,我现在查名为:老鬼的人,但可能26个班里,有6个班也有同名为:老鬼的人,就这样,所以26个表都要查

    以上只是举例
     
  4. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    那就循环咯,查完一个查后面一个,将 26 个班的罗列出来。

    其实你应该做一个表来记录班级名,一个表放学生名,这样在学生表中增加一个字段记录他属于哪个班级(编号)。这样只需要对学生表搜索即可找到满足要求的记录,通过他所属的班级编号对应到班级表中的班级信息。
     
  5. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    ORACLE进来的,现在在视图里建了,然后在程序里像一个表查

    想不用视图,不知道有什么方法,不能SELECT * FROM 表1,表2,表3 WHERE 条件?
     
  6. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    其实你这样设计表,,是不合理的,,
    而且浪费检索资源,,
    你可以设计成这样的表结构,,
    比如class 全部记录班级 id 为主键
    id classname
    1 一班
    2 二班
    3 三班

    设计一个classmate id为主键,,表示为学号;classid 为上面class 表的ID..
    id classid name
    1 1 小叶
    2 2 老鬼
    3 2 bobo
    4 3 不学鸟人
    5 1 帝国猪头

    检索的时候只要联合两个表就可以了..
     
  7. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    ORACLE转过来的,只能这样干
     
  8. jcking

    jcking Well-Known Member

    注册:
    2005-08-30
    帖子:
    22,282
    赞:
    70
    4 3 不学鸟人
    5 1 帝国猪头
     
  9. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    技术区谢绝灌水
     
  10. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    那不然你就先检索来自哪个表的,,然后再检索关键字,,,

    比如

    select * from '$table' where keywords like '% $strkeywordtype % ' order by id desc;
     
    #10 小叶, 2005-10-23
    最后编辑: 2005-10-23
  11. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    我要找名字是老鬼,2、4班都有一个,那还不如直接列出来
     
  12. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    都已经限制在一个表内查询,,
    如果说要两个班同时出现两个相同的人,,
    那你怎么不考虑,,一个班也可能出两个同名的.
     
  13. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    一个班也有两个三个同名,考虑过了
     
  14. Tameway

    Tameway New Member

    注册:
    2005-09-06
    帖子:
    1,286
    赞:
    8
    SELECT * FROM * WHERE 条件?

    这样可以吗?没有尝试过,呵呵~
     
  15. Tameway

    Tameway New Member

    注册:
    2005-09-06
    帖子:
    1,286
    赞:
    8
    我看最好的办法是把26个表都合成一个表算了
    不过加一个班级的字段
     
  16. jcking

    jcking Well-Known Member

    注册:
    2005-08-30
    帖子:
    22,282
    赞:
    70
    技术的,不看了。