使用左连接sql="select a.*,b.* from 表1 a left outer join 表2 b on 条件"
union all 要求上下两查询集字段名完全一样!

解决方案 »

  1.   

    sql="select a.*,b.* from Supply_Listing a ,Buy_Listing b"
    笛卡儿乘积,得到Supply_Listing记录数 * Buy_Listing记录数,正常sql="select a.* from Supply_Listing a union all select b.* from Buy_Listing b"
    a与b的字段不对应,当然会报错sql="select a.*,b.* from 表1 a join 表2 b on 条件"
    改为内连接:select a.*,b.* from 表1 a inner join 表2 b on 条件
      

  2.   

    1.sql="select a.*,b.* from Supply_Listing a ,Buy_Listing b"没条件,返回的是笛卡尔积,=t1的行数*t2的行数,当然多,相当于cross join2.sql="select a.*,b.* from 表1 a join 表2 b on 条件"内连结,只返回匹配条件的,on 后的条件怎么写的?
      

  3.   

    to:ghostzxp(幽灵) 
    sql="select a.*,b.* from Supply_Listing a left outer join Buy_Listing b on a.ProductID<40 and b.ProductID<5"
    结果依然是那样,也就是你们说的笛卡尔积多个
    to: pbsql(风云) 
    sql="select a.*,b.* from Supply_Listing a inner join Buy_Listing b on a.ProductID<40 and b.ProductID<5"
    结果也是没有变化
    到底怎么回事啊?我都糊涂啦!真谢谢你们的回答,不知道后来的智者能不能棒我解决问题啊!
      

  4.   

    连接条件都没有:
    sql="select a.*,b.* from Supply_Listing a inner join Buy_Listing b on a.ProductID=b.ProductID b.ProductID<5"
      

  5.   

    一看不对:
    sql="select a.*,b.* from Supply_Listing a inner join Buy_Listing b on a.ProductID=b.ProductID and b.ProductID<5"
      

  6.   

    on a.ProductID<40 and b.ProductID<5这是分别找出a.ProductID<40 和 b.ProductID<5结果集后两表的笛卡尔积,只是剔除了一些纪录然后再笛卡尔积,有这样的条件么:
    a.ProductID<40 and b.ProductID<5 and a.ProductID=b.ProductID,这就少了
      

  7.   

    1. 笛卡儿乘积 了
    2. sql="select a.* from Supply_Listing a union all select b.* from Buy_Listing b"
    ---> 按楼上 星的
    或者,你想办法补充列吧
    比如a表比b表多一列,类型为char
    sql="select a.* from Supply_Listing a union all select b.* ,'空' from Buy_Listing b"