日期:2014-05-19  浏览次数:20563 次

求对两张表查询的SQL语句写法
想做个对两张表查询的SQL,比如有三个TextBox,用户输入值作为查询条件,其中前两个输入值针对第一张表,第三个输入值针对第二张表。最后的查询值为一个数据集。比如有两张表:开发商定义表Developer和产品表Product,典型字段如下:Developer表的字段有开发商名称和开发商等级,Product表的字段有开发商名称和产品名称。每个开发商有个数不定的产品,存在产品表中。用户可以输入最多三个条件(也可能只有一个或两个,右用户输入决定)查询开发商。三个预定义的条件是开发商等级,开发商名称和开发商的产品,这可以做三个TextBox,有用户输入条件,用户可以输入1到3个条件。后台根据这些条件进行开发商查询。其中前两个条件查Developer表,第三个条件查Product表。求得最后符合条件的表。我的理解是,最终的结果是前两个条件对Developer表的查询结果和第三个条件对Product表的查询结果的交集。这样的SQL语句怎么写?谢谢!

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


--假设三个变量分别为:@v1,@v2,@v3

declare @v1 int,@v2 int, @v3 varchar(100)

select A.*,B.*
from A inner join B on A.ID=B.ID
where (@v1 is null or A.字段1=@v1)
and (@v2 is null or A.字段2=@v2)
and (@v3 is null or B.字段名=@v3)


当然也可以用动态SQL语句。


------解决方案--------------------
楼主的问题应该是很简单的,先根据表之间的关系把二个表联接起来,再加上用户输入的条件
如:
select * from Developer join Product on Developer.Developerid=Product.Developerid where 开发商等级= ' ' and 开发商名称= ' ' and 开发商产品= ' '

根据用户输入条件个数增减where后面的条件.

如果写成存储过程,一楼的做法是很好的.