【问题标题】:SQL Stored procedure Joining tablesSQL 存储过程 连接表
【发布时间】:2014-06-19 19:25:17
【问题描述】:

背景:我的问题有点具体。我正在按照规范创建应用程序,其中一项任务涉及创建存储过程。我知道如何创建和存储一个过程以及如何实现一个过程,但我只是在构造一个过程时遇到了一些问题。

规范规定:

写一个存储过程 upGetTestID。它将接受 3 个参数:WOID、SampleID、Analyte 您需要将 tblWOSampleTest 加入到 TestID 上的 tblTest 然后 SELECT TestID WHERE 三个值匹配

我无法理解我应该做什么。这些表需要连接,因为一个表有列 WOID、SampleID、TestID 但没有 Analyte,而另一个表只有 Analyte 和 TestID。但后来我不知道如何在三个值匹配的地方选择 TestID 以下是一些复制说明的尝试:

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

这也不起作用。我真正想知道的是指示要我做什么,因为我对此有点困惑。

【问题讨论】:

    标签: sql sql-server vba ms-access stored-procedures


    【解决方案1】:

    您应该在哪里反对具有所需列的表。否则你的第一篇文章是正确的方式。

    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
    

    【讨论】:

    • 感谢您的建议,但它说 WHERE 附近有错误
    • 不确定您的哪些表有哪些字段,但您的联接很好。然后您的 WHERE 应该询问具有您想要的字段的表中的值。如果您需要更多帮助,我需要查看 2 个表的架构。我现在只能从你的帖子中猜测。
    【解决方案2】:
    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

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 2015-11-18
      • 1970-01-01
      • 2023-03-09
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多