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

关于 left join 问题
Select * From eit_InfoGroup[a] Left Join (Select CustomTable From eit_ContentModel where id = (select ModelID from eit_infogroup where id=34120))[s] on [a].[Id]=[s].Aid


关联表是动态的,所以得根据 eit_InfoGroup 中的 ModelID 来获取 表明

这样写好像不行啊 ,帮帮忙

------解决方案--------------------
SQL code

(Select CustomTable From eit_ContentModel where id = (select ModelID from eit_infogroup where id=34120))
--你的意思是上面的语句返回的是表的名字??

如果是这样,那么需要动态执行:

declare @tablename varchar(20)
select @tablename=(Select CustomTable From eit_ContentModel where id = (select ModelID from eit_infogroup where id=34120))

exec('Select * From eit_InfoGroup[a] Left Join '+@tablename+' [s] on [a].[Id]=[s].Aid')

------解决方案--------------------
探讨

SQL code


try:

exec('Select * From eit_InfoGroup[a] Left Join '+
(Select CustomTable From eit_ContentModel
where id = (select ModelID from eit_infogroup where id=34120))
+' [s] on [a].[Id]=[s].Ai……

------解决方案--------------------
探讨

我执行了 也是不行哦,跟我上面写的 报一样的错,无法获取 关联表的 字段

------解决方案--------------------
探讨

错误提示:列名 'Aid' 无效。

其实我那个关联表里 有 Aid 这个列名的

------解决方案--------------------
探讨

楼上的,你这样虽然不报错,但是罗列出来的内容 乱套了的