背景:我的问题有点具体。我遵循一个规范来创建一个应用程序,其中一个任务涉及创建一个存储过程。我知道如何创建和存储一个过程以及实现一个过程,但我只是在构建一个过程中遇到了一些问题。
规范声明:
编写存储过程upGetTestID。它将接受3个参数:WOID,SampleID,Analyte 您需要在TestID上将tblWOSampleTest加入tblTest 然后SELECT TestID WHERE三个值匹配
我无法理解我应该做什么。需要连接表,因为一个表具有列WOID,SampleID,TestID但没有Analyte,而另一个表只有Analyte和TestID。但后来我不知道如何 SELECT TestID WHERE三个值匹配以下是一些复制指令的尝试:
CREATE PROCEDURE upGetTestID @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60)
AS
SELECT TestID
FROM tblWOSampleTest
JOIN tblTest
ON tblTest.TestID=tblWOSampleTest.TestID;
WHERE @WOID = tblTest.WOID AND @SampleID = tblTest.SampleID AND @Analyte = tblTest.Analyte
GO
这不起作用
CREATE PROCEDURE upGetTestID @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60)
AS
SELECT *
FROM tblWOSampleTest
JOIN tblTest
ON tblTest.TestID=tblWOSampleTest.TestID;
SELECT TestID
WHERE @WOID = tblWOSampleTest.WOID AND @SampleID = tblWOSampleTest.SampleID AND @Analyte = tblTest.Analyte
GO
这也没有用。我真正想知道的是指令要我做什么,因为我对此感到有些困惑。
答案 0 :(得分:0)
您应该针对具有所需列的表。否则你的第一篇文章是正确的方式。
CREATE PROCEDURE upGetTestID @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60)
AS
SELECT TestID
FROM tblWOSampleTest
JOIN tblTest
ON tblTest.TestID=tblWOSampleTest.TestID;
WHERE @WOID = tblWOSampleTest.WOID AND @SampleID = tblWOSampleTest.SampleID AND @Analyte = tblTest.Analyte
GO
答案 1 :(得分:0)
CREATE PROCEDURE upGetTestIDForAnalyte @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60)
AS
SELECT TestID = t1.TestID
FROM tblWOSampleTest t1
JOIN tblTest t2
ON t1.TestID=t2.TestID;
WHERE @WOID = t1.WOID AND @SampleID = t1.SampleID AND @Analyte = t2.Analyte
GO
我的问题结果是一个含糊不清的专栏名称。我使用此网站作为参考http://databases.aspfaq.com/database/what-does-ambiguous-column-name-mean.html。我需要指定哪个表用于TestID
列