Хранимая процедура T-SQL с множественным выбором - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь создать отчет Winforms в моем приложении .NET. Наши пользователи хотят знать для конкретного сварщика, какой тип сварных швов они сделали между двумя датами. Пользователям также необходимо доказать, что эта сварка была завершена. Внешний интерфейс прост, но я изо всех сил пытаюсь получить данные.

У меня есть следующий запрос SQL в хранимой процедуре:

ВХОДНЫЕ параметры: @WelderNo INT, @StartDate DATETIME, @EndDate DATETIME

SELECT DISTINCT wi.wi_wpsnumbers
FROM wi_weld_instance wi
INNER JOIN wlds_weld_section ws ON wi.weldinstanceid = ws.weldinstanceid
INNER JOIN erd_employee_resourcedetails e ON e.employeeid = ws.employeeid
WHERE (wi.wi_completiondate Between @StartDate AND @EndDate)
AND e.erd_welderno in (@WelderNo)

Теперь я хочу получить некоторую другую информацию о каждом отдельном возвращенном номере wi_wpsnumbers. Это доказательство того, что сварка была завершена. Запрос будет выглядеть примерно так:

Входные параметры: @WelderNo INT, @StartDate DATETIME, @EndDate DATETIME, @wi_wpsnumber NVARCHAR(MAX)

SELECT TOP(1)  e.fabemployeename,
    erd_welderno,
    (pm.PM_Number), 
    (mm.mm_assemblymark), 
    (wd.wd_number),
    (wd.wd_length),
    (wi.wi_completiondate)
FROM wi_weld_instance wi
INNER JOIN wlds_weld_section ws ON wi.weldinstanceid = ws.weldinstanceid
INNER JOIN erd_employee_resourcedetails e ON e.employeeid = ws.employeeid
INNER JOIN wd_weld_definition wd ON wd.welddefinitionid = wi.welddefinitionid
INNER JOIN pm_project_map pm ON pm.projectmapid = wd.projectid
INNER JOIN mm_mark_map mm ON wd.assemblyid = mm.markmapid
WHERE (wi.wi_completiondate Between @StartDate AND @EndDate)
    AND e.erd_welderno in (@WelderNo) AND wi.wi_wpsnumbers = @wi_wpsnumber

Как я могу создать хранимую процедуру, которая возвращает таблицу с комбинацией обоих этих запросов? Я не могу объединить запросы, так как отличные не будут работать и возвращать несколько wi_wpsnumbers одинаково. Я смотрел на временные таблицы, но потом я не понимаю, как вставить оба результата этих запросов в одну строку. Спасибо за вашу помощь

Ссылка на диаграмму базы данных: http://i1215.photobucket.com/albums/cc510/gazamatazzer/DatabaseDiagram.jpg

Ответы [ 2 ]

3 голосов
/ 12 ноября 2010

Вы можете вернуть два набора результатов из SP.
Просто вызовите два SELECT и используйте NextResult в клиентском коде, чтобы получить второй набор результатов после прочтения первого.

0 голосов
/ 12 ноября 2010
select x.*, y.* from
(select * from xtable) x, (select * from ytable) y

Где x.* дает вам все от xtable, а y.* дает все от ytable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...