2014-01-06 7 views
0

У меня в основном есть сетка результатов, и у меня есть раскрывающееся меню в приложении, которое фильтрует столбец «Перевозчик». Но при выборе определенной несущей я хочу, чтобы все возвращаемые строки имели тот же dr_id, что и Carrier, который был выбран.Выбор строк на основе повторяющихся значений

Например, если вы посмотрите на прилагаемое изображение, оно отобразит сетку результатов. Если я фильтрую оператор «ACE CALL LTD_UK», тогда мне нужны строки 27, 28, 29 и 30, потому что dr_id одинаково.

enter image description here

Благодаря

ответ

1

Я не полное решение для вас, как я не знаю точно, что вам схема базы данных (и это большая хранимая процедура!). Однако у меня есть некоторые предложения/комментарии, которые могут оказаться полезными:

Я предполагаю, что хранимая процедура в настоящее время будет возвращать одну строку, если для фильтра установлено значение «ACE CALL LTD_UK», если нет, то это может быть не так Соответствующий!

Что бы я сделал в этом случае, было бы взять заявление SELECT и поместить результаты в таблицу CTE, временную таблицу или вложенный запрос. (Я не уверен, что SQL-СУБД, используемое вами, выглядит как MSSQL, но у вас также есть тег MySQL для публикации).

Как только у меня есть эти результаты, я бы использовал LEFT JOIN от dr_id в таблице темп назад до таблицы drm в том же столбце. Отсюда вам снова понадобится присоединиться к другим таблицам, где данные не различаются, например, таблица Carrier, а затем выберите нужные столбцы.

Вы можете сделать все это в существующем операторе SELECT, однако вам придется начинать соединение с таблицами несколько раз или использовать вложенные запросы, которые будут очень грязными. Однако главная причина, по которой я выбрал решение, которое я опубликовал, заключается в том, что я недостаточно разбираюсь в хранимой процедуре и поэтому выбрал наиболее безопасное решение.

Если вам нужен пример того, что я имею в виду, я попытаюсь его предоставить.

+0

Спасибо за ваш ответ, но СП возвращает более одной строки, когда фильтруется «ACE ВЫЗОВ LTD_UK», так что я не думаю, что будет работать ... Приветствия – jeffry

+0

Это должно работать с несколькими рядами, только до тех пор, как 'dr_id' являются отдельными для каждой строки, иначе вы начнете получать дубликаты. Я просто посмотрел на скриншот, и я вижу, что это будет видно из видимых записей. – XN16

+0

Спасибо за ваш ответ, мне удалось сделать это с помощью более простого запроса. SELECT * FROM FullResults WHERE ID = (SELECT ID FROM FullResults WHERE Type = @variable); – jeffry

Смежные вопросы