2010-09-17 84 views
0

我试图修改一个存储过程,我写了从其​​他表中取出数据并将其插入表中。SQL存储过程,从辅助表中选择数据

基本上我有一个表,我们通过ID存储映射。在该表中,我放置了一个应该存储该数据串联的字段,该字段可以正常工作。问题是存储映射的ID,而不是属于该ID的名称。

我的存储过程:

`USE [SNHULeads] 

GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[spSNHUCodeCreate] 
(
@Source numeric(18,0), 
@ProgramName numeric(18,0), 
@Division numeric(18,0), 
@Medium numeric(18,0), 
@content varchar(50), 
@URL varchar(500) = 'N/A', 
@redirect varchar(100), 
@Cost numeric(18,0), 
@Notes varchar(500) = 'N/A', 
@StartDate datetime, 
@EndDate datetime, 
@oper varchar(50), 
@id varchar(50) 
) 

AS 

DECLARE @SNHUCode numeric(18,0) 
DECLARE @DateCreated datetime 
SET @SNHUCode = (SELECT MAX(snhuCODE) + 1 FROM [dbo].[VendorProgram]) 
SET @DateCreated = GETDATE()` 

IF @URL != 'N/A' 
BEGIN 
    SET @URL = 'http://www.snhu.edu/' + @URL + '.asp?utm_source=' + CONVERT(varchar(50), @Source) + '&utm_medium=' + CONVERT(varchar(50), @Medium) + '&utm_content=' + CONVERT(varchar(50), @content) + '&utm_campaign=' + CONVERT(varchar(50), @ProgramName) + '&SNHU_Segment=' + CONVERT(varchar(50), @Division) 
END 

INSERT INTO [SNHULeads].[dbo].[VendorProgram] 
     ([vendorID] 
     ,[programID] 
     ,[divisionID] 
     ,[mediumID] 
     ,[snhuCODE] 
     ,[content] 
     ,[url] 
     ,[cost] 
     ,[Notes] 
     ,[StartDate] 
     ,[EndDate] 
     ,[redirect] 
     ,[DateCreated]) 
VALUES 
     (@Source 
     ,@ProgramName 
     ,@Division 
     ,@Medium 
     ,@SNHUCode 
     ,@content 
     ,@URL 
     ,@Cost 
     ,@Notes 
     ,@StartDate 
     ,@EndDate 
     ,@redirect 
     ,@DateCreated)` 

基本上,URL栏,我赶上我在发送的ID,这不是我想要的。我似乎无法找到一个方法来选择对应于@Source ID我送名

我想是这样,在proc声明一个新的变量,然后选择它是这样的:

DECLARE @sourceName varchar(50) SET @sName = (SELECT Leads.dbo.Vendors.Source WHERE mappingID = @Source)

这给我一个错误,“多部分标识符”Vendors.mappingID“无法绑定。”。

对我有帮助吗?不要抨击SQL太多,这显然不是我的强项。

回答

0

好吧,我不能肯定这是你想要的,但假设@source涉及一个表中的列MappingId称为Vendors在一个名为Leads数据库;那么这个SQL会将一个名为@sourceName的变量设置为相应的源名称。然后,您可以将此数据插入到另一个表中。

这是你在找什么?

Declare @sourceName varchar(50) 

    Select @sourceName = SourceName 
    From Leads.dbo.Vendors 
    Where MappingId = @Source 

注:此SQL假定只有一行将存在于每个@source

+0

该诀窍过去了,非常感谢。我有正确的概念,但查询都错了。 – CoreyT 2010-09-17 17:19:22