Объединение таблиц хранимых процедур SQL

#sql #sql-server #vba #ms-access #stored-procedures

#sql #sql-сервер #vba #ms-access #хранимые процедуры

Вопрос:

Справочная информация: Моя проблема немного специфична. Я следую спецификации для создания приложения, и одна из задач включает в себя создание хранимой процедуры. Я знаю, как создать и сохранить процедуру, а также реализовать ее, но у меня просто возникли проблемы с некоторым синтаксисом ее построения.

Спецификация гласит:

Напишите upGetTestID хранимой процедуры. Он примет 3 параметра: WOID, SampleID, Analite Вам нужно объединить tblWOSampleTest с tblTest для TestID, затем ВЫБЕРИТЕ TestID, ГДЕ совпадают три значения

У меня проблемы с пониманием того, что я должен делать. Таблицы необходимо объединить, потому что в одной таблице есть столбцы WOID, SampleID, TestID, но нет Analite, в то время как в другой таблице есть только Analite и 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
 

Это также не сработало. Что я действительно хочу знать, так это то, что инструкции хотят, чтобы я делал, потому что я немного запутался в этом.

Ответ №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
 

Комментарии:

1. спасибо за предложение, но в нем говорится, что есть ошибка, рядом с КОТОРОЙ

2. Не уверен, в какой из ваших таблиц были какие поля, но ваше соединение хорошее. Затем ваш 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