日期:2014-05-17  浏览次数:20418 次

请教大家一个UNION的问题
我现在有两个表,一个表是[OrderInfoTable],另一个表是[ContactTable]
[OrderInfoTable]有5列,分别是[OrderNum][Express][ExpressNum][Operator][Goods],[OrderNum]为主键
[ContactTable]有4列,分别是[UserName][PhoneNum][Address][OrderNum],其中[OrderNum]是外键,[UserName]是主键。
我想查询[OderNum]=xxxx,然后将他们列出来,成[UserName][PhoneNum][Address][OrderNum][Express][ExpressNum][Operator][Goods]这样,给我的别的程序用,那这样的查询是不是应该用UNION呀?但是用UNION后提示错误:使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同。所以不知道应该怎么写这个查询语句?

------解决方案--------------------
用left join 就可以:

select c.[UserName],c.[PhoneNum],c.[Address],c.[OrderNum],
       ct.[Express],ct.[ExpressNum],ct.[Operator],ct.[Goods]
from [ContactTable] c
left join [OrderInfoTable] ct
       on c.[OrderNum] = ct.[OrderNum]
where c.[OrderNum] = xxx
      

------解决方案--------------------

--使用关联查询

select [UserName],[PhoneNum],[Address],a.OrderNum,[Express],[ExpressNum],[Operator],[Goods]
from ContactTable a
inner join OrderInfoTable b on a.OderNum=b.OderNum
where a.OderNum=xxx