У меня есть запрос SQL, возвращающий результаты на основе предложения where.SQL Server: Nested Select Query
Я хотел бы добавить еще несколько результатов из той же таблицы в зависимости от того, что найдено в первом выборе.
Мой выбор возвращает строки с идентификаторами, которые соответствуют критериям. Случается, что в таблице больше строк с этим идентификатором, но это не соответствует исходным критериям. Вместо того, чтобы повторно запрашивать БД отдельным вызовом, я хотел бы использовать один оператор select, чтобы также получить эти дополнительные строки с тем же идентификатором. ID не является индексом/идентификатором. Это соглашение об именах, которое я использую здесь.
Псевдо: (два шага)
1: select * from table where condition=xxx
2: for each row returned, (select * from table where id=row.id)
Я хочу сделать:
select
id as thisID, field1, field2,
(select id, field1, field2 from table where id = thisID)
from
table
where
condition=xxx
У меня есть несколько соединений в моем реальном запросе, и просто не могу получить выше для работы. Я, к сожалению, не могу предоставить реальный запрос, но я получаю ошибку:
Только одно выражение может быть указано в списке выбора, когда подзапрос не вводится с EXISTS. Недопустимое имя столбца 'thisID'
Мой запрос отлично работает с несколькими объединениями, без указанных выше. Я пытаюсь получить эти дополнительные записи как часть текущего рабочего запроса.
Пример:
ТАБЛИЦА
select * from table where col3 = 'green'
id, col1, col2, col3
123 | blue | red | green
-------------------------
567 | blue | red | green
-------------------------
123 | blue | red | blue
-------------------------
890 | blue | red | green
-------------------------
Я хочу, чтобы вернуть все 4 строки, потому что, хотя row 3
не проходит, когда условие, оно имеет ту же col1
значение как row 1
(123), и я необходимо включить его, поскольку он является частью «набора», который мне нужно найти/импортировать, вызванного/ссылающегося на id=123
.
То, что я делаю вручную сейчас, получает строку 1, а затем запускает другой запрос на основе идентификатора строки 1, чтобы получить строку 3.
... хорошо, можете ли вы дать нам образцы данных? У вас есть уникальный идентификатор для каждой строки (идентификаторы не обязательно должны быть уникальными? Если соответствующие подписи также отображаются из подзапроса? Что происходит, если несколько строк с одним и тем же ключом - должны ли они сообщаться подзапросом, но перечислены с другой строкой (уникальный уникальный идентификатор)? Для получения наилучших результатов, пожалуйста, отправьте как можно более полный запрос (анонимное, если вам нужно). –
Привет @ Clockwork-Muse, запрос имеет 5 объединений и много, много полей ... Я «импортирую» данные из старой системы в качестве приложения к новой системе, которую мы разрабатываем. Я добавлю еще несколько деталей. На данный момент я пошел вперед и просто запросил каждую начальную строку, так как мне нужно сделайте некоторый прогресс, но я бы хотел, чтобы вышеупомянутое работало для будущей справки. –
Это прекрасно, но если вы не сообщите нам, что вы ожидаете от данных, когда вы закончите (в отношении общих значений, скопированных), мы можем «Мне очень приятно помочь». Черт возьми, вы можете быть удивлены результатами ... –