string strSQL="select members.unitname as postunitname from bbs,members where bbs.postuser=members.userid";
string strSQL1="select members.unitname as replyunitname from bbs,members where bbs.replyuser=members.userid";问题:
请问以上两个SQL语句能不能合并成一个,合并后执行的效率会不会更好?谢谢!

解决方案 »

  1.   

    select members.unitname as postunitname from bbs,members where bbs.postuser=members.userid or bbs.replyuser=members.userid
      

  2.   

    select members.unitname as postunitname from bbs,members where bbs.postuser=members.userid or bbs.replyuser=members.userid
    ----------------
    那我所需要的replyunitname呢?
      

  3.   

    select members.unitname as postunitname from bbs,members where bbs.postuser=members.userid 
    union
    select members.unitname as replyunitname from bbs,members where bbs.replyuser=members.userid
      

  4.   

    可以合并。SELECT M1.UnitName AS PostUnitName,M2.UnitName AS ReplyUnitName
    FROM BBS 
    LEFT JOIN Members M1 ON M1.UserID=BBS.PostUser
    LEFT JOIN Members M2 ON M2.UserID=BBS.ReplyUser
      

  5.   

    select members.unitname,  ‘postunitname' as type from bbs,members where bbs.postuser=members.userid
    union
    select members.unitname,'replyunitname' as type from bbs,members where bbs.replyuser=members.userid
      

  6.   

    //****使用存储过程,返回多个数据集
    create proc proc_system_user_Filter
    (
        @userid varchar(20);
    )
    as
    select members.unitname as postunitname from bbs,members where bbs.postuser=@useridselect members.unitname as replyunitname from bbs,members where bbs.replyuser=@userid
      

  7.   

    第二种方法:
    SELECT dbo.TB_ORDERS.OrderID, dbo.TB_ORDERS.OrderDate, 
          dbo.TB_ORDERS.OrderState, dbo.TB_ORDERS.UserCode, 
          dbo.TB_System_Power.PowerName, dbo.TB_ORDERS.ReplaceUserCode
    FROM dbo.TB_ORDERS INNER JOIN
          dbo.TB_System_Power ON 
          dbo.TB_ORDERS.UserCode = dbo.TB_System_Power.UserCode LEFT OUTER JOIN
          dbo.TB_System_Power TB_System_Power_1 ON
      

  8.   

    Member的主键如果为:UserID,那么效率没有什么差异。
      

  9.   

    SELECT M1.UnitName AS PostUnitName,M2.UnitName AS ReplyUnitName
    FROM BBS 
    LEFT JOIN Members M1 ON M1.UserID=BBS.PostUser
    LEFT JOIN Members M2 ON M2.UserID=BBS.ReplyUser
    -----------------------------------
    不行,出错
      

  10.   

    LEFT JOIN Members M1 ON M1.UserID=BBS.PostUser
    LEFT JOIN Members M2 ON M2.UserID=BBS.ReplyUser
    说这两句有语法错误,对了,是不是我的数据库是ACCESS
      

  11.   

    TO楼主:Access的错误提示是什么?
      

  12.   

    语法错误(操作符丢失)在ACCESS中,LEFT JOIN Members M1 ON M1.UserID=BBS.PostUser
    LEFT JOIN Members M2 ON M2.UserID=BBS.ReplyUser
      

  13.   

    SELECT m1.unitname as postunitname,m2.unitname as replyunitname
    FROM BBS,members as m1,members as m2 where bbs.postuser=m1.userid and bbs.replyuser=m2.userid我自己这样写了个SQL语句不知道有问题没
      

  14.   

    ~_~看来Access不支持JOIN?没用过楼主的写法没有错。
      

  15.   

    谢谢kssys,但我发现个问题,如果bbs.replyuser列中如果有空值就麻烦了,会少显示记录
      

  16.   

    是的,会有这个问题。刚才上网看了看,Access支持LEFT JOIN的,参看:
    http://community.csdn.net/Expert/topic/4506/4506432.xml?temp=.6742365
      

  17.   

    恩,我也试了,一个left join可以,两个就不行了
      

  18.   

    http://jhtchina.cnblogs.com/articles/256331.html
      

  19.   

    //试试
    SELECT d.UnitName AS PostUnitName,M2.UnitName AS ReplyUnitName 
    FROM (
      SELECT BBS.PostUser,BBS.ReplyUser,M1.UnitName
      FROM BBS LEFT JOIN Members M1 ON M1.UserID=BBS.PostUser) 

    LEFT JOIN Members M2 ON M2.UserID=d.ReplyUser