日期:2014-05-16  浏览次数:20453 次

两个表格的数据查询
本帖最后由 yaoxinreaps 于 2014-05-08 09:26:21 编辑
我有两个表格分别为G1和G2,其中他们有共同的一列“名称”,且G1的包含的名称是G2的一个子集,现在要查询G2中名称与G1相同的且对应G1中另外一个属性"Location"条件的数据,该怎么做?
比如语句"select * from G2 where 名称 in (select 名称 from G1 where Location = 'l层r行c列')",但是这里的l,r,c是三个变量,如果直接是固定值'1层2行3列'这样倒是可以,怎么处理变量的情况?急求。
------解决方案--------------------
这个location的值从哪里取出来的呢?是不是前台页面传进来的?
------解决方案--------------------
...跟几个表有什么关系。
你的"select * from InWasteInfo where Location = '" + l + "层" + r + "行" + c + "列'"可以。
那么"select * from G2 where 名称 in (select 名称 from G1 where Location = '" + l + "层" + r + "行" + c + "列')" 就绝对可以。
即使出问题,也不是SQL端的事了。

另这跟模糊查询有啥关系,哪模糊了? 
------解决方案--------------------
这个你肯定需要写个存储过程接收程序传过来的参数,然后用动态SQL实现

CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
@floor int,
@row int,
@col int
AS
BEGIN
declare @sql varchar(max)
set @sql = 'select * from G2 where 名称 in (select 名称 from G1 where Location = '+@floor+'层'+@row+'行'+@col+'列)'
exec(@sql)
END
GO


------解决方案--------------------
用execute('sql语句')或者sp_executesql,动态执行sql语句的方法,可以用变量的形式