【发布时间】:2015-08-03 22:45:29
【问题描述】:
我需要处理一些复杂的场景。我有一组存储过程(每个搜索条件一个)来根据我们在 SQL SERVER 中选择的搜索条件搜索记录。 例如,如果您采用一个存储过程,它会通过将“名字”作为输入参数返回一组列(记录),以根据名字进行搜索。
例如,存储过程基于一些连接返回record_id、record_check_id、memberid、memberlname、memberfname、address1、address2、city1、State1、Zip1和Phone。 在此条件下,地址字段来自表 Member_adress 表,Member_adress.record_id = records.record_id。现在我必须从另一个获取这些地址字段 如果 record_check_id = 1,则表 member_additional_address。
为此,我尝试了这种方式。
我将所有符合成员名字字段的记录作为我们的输入字段。
select a.record_id, a.record_check_id into #temp_table From
members b
inner loop join records a
on a.member_id = b.member_id
Where b.fname like @firstname
现在,我的要求是检查临时表(#temp_table)中这些记录的record_check_id,如果它是1(一), 我们需要从 member_additional_address 表中返回地址字段,而不是从 member_address 表中获取。 如果一条记录的@record_check_id = 1 并且在@member_additional_address 表中没有任何具有该record_id 的记录,那么我们需要显示member_address 本身的详细信息。
为此,我用这些地址字段创建了一个临时表,
declare @Addressinfo table
(
address1 varchar(30),
address2 varchar(30),
city varchar(30),
state char(2),
zip char(5))
下一个:
While (Select Count(*) From #temp_table) > 0
if (record_check_id = 1)
update t
set
t.address1 = f.address1,
t.address2 = f.address2,
t.city = f.city,
t.state = f.state,
t.zip = f.zip,
t.zip_ext = f.zip_ext
from @Addressinfo t
join @member_additional_address f (nolock)
on t.record_id= f.record_id
where record_check_id = 1
.
.
.
.
.
//something like this
接下来希望通过将记录表与@addressinfo temp_table 的记录连接起来来返回所有所需的列。 请让我知道如何在这里实现逻辑。提前非常感谢!
【问题讨论】:
-
你能发布
member_address和member_additional_address的表结构吗? -
两者具有相同的列(结构):地址 1、地址 2、城市、州、邮编.. @FelixPamittan
标签: sql sql-server loops temp-tables