Я не полное решение для вас, как я не знаю точно, что вам схема базы данных (и это большая хранимая процедура!). Однако у меня есть некоторые предложения/комментарии, которые могут оказаться полезными:
Я предполагаю, что хранимая процедура в настоящее время будет возвращать одну строку, если для фильтра установлено значение «ACE CALL LTD_UK», если нет, то это может быть не так Соответствующий!
Что бы я сделал в этом случае, было бы взять заявление SELECT
и поместить результаты в таблицу CTE
, временную таблицу или вложенный запрос. (Я не уверен, что SQL-СУБД, используемое вами, выглядит как MSSQL, но у вас также есть тег MySQL для публикации).
Как только у меня есть эти результаты, я бы использовал LEFT JOIN
от dr_id
в таблице темп назад до таблицы drm
в том же столбце. Отсюда вам снова понадобится присоединиться к другим таблицам, где данные не различаются, например, таблица Carrier
, а затем выберите нужные столбцы.
Вы можете сделать все это в существующем операторе SELECT
, однако вам придется начинать соединение с таблицами несколько раз или использовать вложенные запросы, которые будут очень грязными. Однако главная причина, по которой я выбрал решение, которое я опубликовал, заключается в том, что я недостаточно разбираюсь в хранимой процедуре и поэтому выбрал наиболее безопасное решение.
Если вам нужен пример того, что я имею в виду, я попытаюсь его предоставить.
Спасибо за ваш ответ, но СП возвращает более одной строки, когда фильтруется «ACE ВЫЗОВ LTD_UK», так что я не думаю, что будет работать ... Приветствия – jeffry
Это должно работать с несколькими рядами, только до тех пор, как 'dr_id' являются отдельными для каждой строки, иначе вы начнете получать дубликаты. Я просто посмотрел на скриншот, и я вижу, что это будет видно из видимых записей. – XN16
Спасибо за ваш ответ, мне удалось сделать это с помощью более простого запроса. SELECT * FROM FullResults WHERE ID = (SELECT ID FROM FullResults WHERE Type = @variable); – jeffry