尝试从不同的表中选择行

本文关键字:选择 | 更新日期: 2023-09-27 18:27:12

select distinct vtw.lastname, vtw.firstname, vtw.dob, vtw.clubnumber, vtw.tournamentname, vtw.BossTournamentID, vtw.tournamentdatetime, vtw.tournamentid, tp.tournamentprizeid, tp.status, tp.place, p.prizeid,p.prizename, tp.bRedeemed, tp.CouponNumber
from vwTournamentWinners vtw, tournamentprizes tp, prizes p
where vtw.fk_tournamentid=tp.fk_tournamentid and vtw.fk_playerid=tp.fk_winnerid and tp.fk_prizeid=p.prizeid and vtw.tournamentdatetime between '8/10/2013' and '8/10/2013' and tp.status='Available'
UNION
SELECT BossID, Status, CouponNumber, FK_PrizeID, FK_WinnerID, PrizeName, FirstName, LastName, DOB 
FROM BountyPrizes, Prizes, Players
where Prizes.PrizeID=BountyPrizes.FK_PrizeID and Players.PlayerID=BountyPrizes.FK_WinnerID
order by vtw.tournamentdatetime DESC

错误信息:

Msg 205,级别 16,状态 1,第 1 行使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询在其目标列表中必须具有相同数量的表达式。

注意:这两个查询单独工作。我希望网格视图显示一个无法填充列的空白字符串。克里斯。

尝试从不同的表中选择行

第二个选择语句更改为:

SELECT BossID, Status, CouponNumber, FK_PrizeID, FK_WinnerID, PrizeName, FirstName, LastName, DOB , '', '' , '', '', '', ''

确保两个查询返回相同数量的字段

选择不同的vtw.lastname, vtw.firstname, vtw.dob, vtw.clubnumber, vtw.tournamentname, vtw.BossTournamentID, vtw.tournamentdatetime, vtw.tournamentid, tp.tournamentprizeid, tp.status, tp.place, p.prizeid, p.prizename, tp.bRedeemed, tp.优惠券号码,空

从 vw

锦标赛获胜者 vtw, 锦标赛奖品 tp, 奖品 p

其中 vtw.fk_tournamentid=tp.fk_tournamentid 和 vtw.fk_playerid=tp.fk_winnerid 和 tp.fk_prizeid=p.prizeid 和 vtw.tournamentdatetime 介于 '8/10/2013' 和 '8/10/2013' 之间,并且 tp.status='可用'

联盟

选择姓氏、名字、DOB、空、空、老板ID、空、空、空、

状态、空、FK_PrizeID、奖品名称、b已兑换、优惠券号码、FK_WinnerID

从赏金奖品, 奖品, 玩家其中 Prizes.PrizeID=BountyPrizes.FK_PrizeID 和 Players.PlayerID=BountyPrizes.FK_WinnerID

vtw.tournamentdatetime DESC