|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.10.2014, 17:05 | #1 |
Пользователь
Регистрация: 21.05.2008
Сообщений: 14
|
SQL SELECT IN
Форумчане подскажите, имеется запрос:
SELECT * FROM `sssd` WHERE number IN ('111', '222') Вывод: id number 1 111 2 222 Как модифицировать этот запрос? допустим если 222 нет в БД то всё равно вывести поле только с параметром NULL. как должно работать пример: SELECT * FROM `sssd` WHERE number IN ('111', '222', '333') 111 111 222 222 333 NULL Идеи не приходят! база огромная! нужен лёгкий запрос! Спасиб! Последний раз редактировалось Seregakz; 28.10.2014 в 17:19. |
28.10.2014, 17:14 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Что-то слишком заумно. Сначала стоит подумать - а нужно ли оно. Почти уверен - не нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
28.10.2014, 17:18 | #3 |
Пользователь
Регистрация: 21.05.2008
Сообщений: 14
|
|
28.10.2014, 17:28 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ну ладно. Единственное и сразу пришло в голову - хранимка, которой передается список значений. Она и строит выходной набор данных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
28.10.2014, 17:31 | #5 | |
Пользователь
Регистрация: 21.05.2008
Сообщений: 14
|
Цитата:
Возможно ли както изменить запрос не IN любым методом лижбы выполнялись мои условия? Последний раз редактировалось Seregakz; 28.10.2014 в 17:36. |
|
28.10.2014, 18:05 | #6 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Нужно сделать inline-таблицу и подключиться к ней внешним объединением:
Код:
В разработке: воспроизводственный контур ИТ
|
28.10.2014, 18:50 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Наоборот sssd засунуть в left join. А поскольку число параметров заранее не известно, то и предлагал передать их процедуре в стринговом виде через запятую, а в ней либо запрос динамически сформировать, либо эти значения засунуть во временную таблицу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
28.10.2014, 19:11 | #8 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Да, перепутал. Также можно, не изменяя запрос полностью, вместо left join написать right join.
В разработке: воспроизводственный контур ИТ
|
28.10.2014, 19:19 | #9 | |
Пользователь
Регистрация: 21.05.2008
Сообщений: 14
|
Цитата:
SELECT a.id, sssd . * FROM sssd RIGHT JOIN ( SELECT 111 id UNION ALL SELECT 222 UNION ALL SELECT 333 )a ON sssd.id = a.id Получаю: id id number 111 NULL NULL 222 NULL NULL 333 NULL NULL А необходимо если только значения нет в бд вывести null (допусти 333 нет, то): 111 111 222 222 333 NULL |
|
28.10.2014, 19:22 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
id или number?
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
MS SQL ADO Как вывести через запрос Select из двух баз данных по совпадающему id? | SovereignSun | SQL, базы данных | 2 | 17.01.2012 17:59 |
sql запрос select | Olegka_ | БД в Delphi | 11 | 27.03.2011 16:55 |
ADO-MS SQL Не выполняется запрос SELECT | Dj_SheLL | Помощь студентам | 10 | 23.11.2010 14:17 |
SELECT синтаксис) (SQL) | k_a_m_a_z | Помощь студентам | 4 | 14.06.2010 15:34 |
SELECT SQL | vmilyoshin | Помощь студентам | 1 | 20.02.2010 09:41 |