日期:2014-05-18  浏览次数:20382 次

大家看看这个问题呗,帮我解决一下
public   void   BridGrid1()
        {
                string     mycon= "Server=Z-EBAND;   uid=sa;Pwd=;Database=UFDATA_600_2007 ";
                string   sql= "Select   cInvCode,cInvName,cVenCode   from   Inventory   where   cVenCode= ' "   +   Session[ "cVenCode "]   +   " 'union     select   iQuantity   from   CurrentStock   ";
                SqlDataAdapter   myda1   =   new   SqlDataAdapter(sql,mycon   );
                DataSet   myds1   =   new   DataSet();
                myda1.Fill(myds1);
                DataView   mydv1=   myds1.Tables[0].DefaultView;
                GridView1.DataSource   =   mydv1;
                GridView1.DataKeyNames   =   new   string[]   {   "cInvCode "   };
                GridView1.DataBind();
             
 
        }
出现下面错误
包含   UNION   运算符的   SQL   语句中的所有查询都必须在目标列表中具有相同数目的表达式。

------解决方案--------------------
问题很清楚啊,两个列完全不同的查询怎么可以union呢?
------解决方案--------------------
使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。

------解决方案--------------------
SQL语句错误,union前后两个select所选择的列数应该是一致的
------解决方案--------------------
sql = "Select cInvCode,cInvName,cVenCode from Inventory where cVenCode= ' " + Session[ "cVenCode "] + ' " " + "and iQuantity =(select iQuantity from CurrentStock ) "
------解决方案--------------------
Select cInvCode,cInvName,cVenCode from Inventory where cVenCode= ' " + Session[ "cVenCode "] + " 'union select iQuantity from CurrentStock

两张表的列不一样