sql多表连接 班级号 是一个单独的表! 当要查询全部班级时候却显示不出来。。!! 困惑- -

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql多表连接 班级号 是一个单独的表! 当要查询全部班级时候却显示不出来。。!! 困惑- -相关的知识,希望对你有一定的参考价值。

DBHlre.conn.Open(); #region sql语句
StringBuilder sql = new StringBuilder();
sql.AppendFormat("SELECT dbo.classes.className, dbo.studenl.stuName, dbo.studenl.birthday, dbo.studenl.stuAddress, dbo.studenl.stuSex, dbo.studenl.stuId");
sql.AppendFormat(" FROM dbo.classes INNER JOIN");
sql.AppendFormat(" dbo.studenl ON dbo.classes.classid = dbo.studenl.classId");
sql.AppendFormat(" where studenl.classId like '0%'",comboBox1.SelectedValue);

if (comboBox1.Text.Trim() == "全部"||textBox1.Text.Trim() =="")




else
sql.AppendFormat(" and studenl.stuName like '0%'", textBox1.Text.Trim());


全部我是用这种方式添加到下拉列表的
DataRow row = ds.Tables["班级"].NewRow();
row["classid"] = -1;
row["className"] = "全部";
ds.Tables["班级"].Rows.InsertAt(row, 0);
comboBox1.SelectedIndex = 0;

我现在就有个疑问 当我选着全部的时候就显示全部信息但是却显示不出来
我用的是多表连接!

sql.AppendFormat(" where studenl.classId like '0%'",comboBox1.SelectedValue);

这句放判断中去添加
参考技术A 好久没有看到这么繁琐的sql查询语句了,倒不是绝度多表链接查询难,是你写的程序语句,我看不太懂,我学java的,sql server,oracle,access这些数据库的查询语句基本上没多的差别,但是你这么一弄,我还真看不出来,这是什么语句了。追问

我写的是神器呵呵

参考技术B 语句是从数据库里查询的,数据源又不是存放在数据库里的,怎么查询的到?

sql 多表查询

1.等值连接 

  select e.empno d.dname   from  emp e,dept d where  e.deptno=d.deptno;

2.不等值连接 

技术分享
SQL> --不等值连接
SQL> --查询员工信息: 员工号 姓名 月薪 工资级别
SQL> select * from salgrade;

     GRADE      LOSAL      HISAL                                                
---------- ---------- ----------                                                
         1        700       1200                                                
         2       1201       1400                                                
         3       1401       2000                                                
         4       2001       3000                                                
         5       3001       9999                                                

SQL> select e.empno,e.ename,e.sal,s.grade
  2  from emp e,salgrade s
  3  where e.sal between s.losal and s.hisal;

     EMPNO ENAME             SAL      GRADE                                     
---------- ---------- ---------- ----------                                     
      7369 SMITH             800          1                                     
      7900 JAMES             950          1                                     
      7876 ADAMS            1100          1                                     
      7521 WARD             1250          2                                     
      7654 MARTIN           1250          2                                     
      7934 MILLER           1300          2                                     
      7844 TURNER           1500          3                                     
      7499 ALLEN            1600          3                                     
      7782 CLARK            2450          4                                     
      7698 BLAKE            2850          4                                     
      7566 JONES            2975          4                                     

     EMPNO ENAME             SAL      GRADE                                     
---------- ---------- ---------- ----------                                     
      7788 SCOTT            3000          4                                     
      7902 FORD             3000          4                                     
      7839 KING             5000          5                                     
View Code

 3.外链接

--外连接
SQL> --按部门统计员工人数:部门号 部门名称 人数
SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
  2  from emp e,dept d
  3  where e.deptno=d.deptno
  4  group by d.deptno,d.dname;(没有出现在 分组函数中)

    部门号 部门名称             人数                                            
---------- -------------- ----------                                            
        10 ACCOUNTING              3                                            
        20 RESEARCH                5                                            
        30 SALES                   6                                            

SQL> select * from dept;

    DEPTNO DNAME          LOC                                                   
---------- -------------- -------------                                         
        10 ACCOUNTING     NEW YORK                                              
        20 RESEARCH       DALLAS                                                
        30 SALES          CHICAGO                                               
        40 OPERATIONS     BOSTON                                                

SQL> select * from emp where deptno=40;

未选定行

SQL> /*
SQL> 希望: 对于某些不成立的记录,任然希望包含在最后的结果中
SQL> 左外连接:当where e.deptno=d.deptno不成立的时候,等号左边的表任然被包含
SQL>     写法:where e.deptno=d.deptno(+)
SQL> 右外连接:当where e.deptno=d.deptno不成立的时候,等号右边的表任然被包含
SQL>     写法: where e.deptno(+)=d.deptno
SQL> */
SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
  2  from emp e,dept d
  3  where e.deptno(+)=d.deptno
  4  group by d.deptno,d.dname;

    部门号 部门名称             人数                                            
---------- -------------- ----------                                            
        10 ACCOUNTING              3                                            
        40 OPERATIONS              0                                            
        20 RESEARCH                5                                            
        30 SALES                   6                                            

 

以上是关于sql多表连接 班级号 是一个单独的表! 当要查询全部班级时候却显示不出来。。!! 困惑- -的主要内容,如果未能解决你的问题,请参考以下文章

SQL server 查询数据库中所有包含某值的表

SQL多表联合查询

在oracle里,一个sql多表查询,单独执行能利用索引提高速率,但外层套上分页时,会全表扫描,如何解决,求助高手

数据库常用SQL语句

Sql Server数据库之多表查询

sql 多表查询