powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из одного или другого
15 сообщений из 15, страница 1 из 1
Выборка из одного или другого
    #38893656
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите:
Есть таблица `Tbl` в которой key, name1,name2
Как сделать SELECT name1 or name2
в зависимости в каком столбце есть результат
Важное условие! Первоочередной поиск по столбцу name2
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38893672
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
COALESCE()
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38893676
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Спасибо!
вот плин, а я то начал мудрить свое)
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894148
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
долго мучаясь, что-то не могу сообразить
Дано:
Код: sql
1.
2.
3.
4.
name1--------name2
Крем С--------Крем Плюс
Мазь Плюс----Вита
Плюс----------Тест Плюс



т.е. сначала должно выдавать по столюцу name2, если же там нету то по name1
к примеру

Код: sql
1.
2.
3.
4.
5.
WHERE .. LIKE '%Плюс%'  
--должны получить
Крем Плюс
Мазь Плюс
Тест Плюс
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894173
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputLag, или у вас что-то запредельно хитрое, или
Код: sql
1.
where name2 like ... or name1 like ...
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894202
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, я сначала так пробывал, но так не сработает
будет выбирать всегда из name2
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894205
InputLag,

пример тестовых данных и желаемый результат на них приведи.
ибо не понятно, чем тебе
Код: sql
1.
select coalesce(name2, name1) as x_name from `Tbl`

не угодил
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894207
InputLagдолго мучаясь, что-то не могу сообразить
Дано:
Код: sql
1.
2.
3.
4.
name1--------name2
Крем С--------Крем Плюс
Мазь Плюс----Вита
Плюс----------Тест Плюс



т.е. сначала должно выдавать по столюцу name2, если же там нету то по name1
к примеру

Код: sql
1.
2.
3.
4.
5.
WHERE .. LIKE '%Плюс%'  
--должны получить
Крем Плюс
Мазь Плюс
Тест Плюс

а, воно оно тебе как надо. тогда UNION ALL
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894227
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения! Не до конца описал свою проблему.

Дано:
Код: sql
1.
2.
3.
4.
5.
id--name1--------name2
22-Крем С--------Крем
38-Крем Плюс----Крем
45-Крем Формула-Крем
98-Крем----------Тест Крем



Код: sql
1.
2.
3.
4.
SELECT DISTINCT ... WHERE .. LIKE '%Крем%'  
--должны получить
Крем
Тест Крем



Код: sql
1.
2.
3.
SELECT DISTINCT ... WHERE .. LIKE '%Крем Плюс%'  
--должны получить
Крем Плюс
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894240
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я верно понимаю написанное между строк, то
Код: sql
1.
2.
3.
SELECT DISTINCT CASE name2 LIKE 'шаблон' WHEN 1 THEN name2 ELSE name1 END
FROM mytable
WHERE name2 LIKE 'шаблон' + name1 LIKE 'шаблон'
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894251
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Огромнейшее спасибо!
также всем благодарность, кто ответил
P.S. давно не писал запросы, позабывал основные приемы
с Case - все сработало как надо !
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894293
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле мой запрос - неправильный. И он даст неверные данные в случае, когда оба поля соответствуют шаблону. Правильный запрос - это UNION с внешним DISTINCT.
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894319
AkinaПравильный запрос - это UNION с внешним DISTINCT.UNION, в отличии от UNION ALL, по определению с "внешним" дистинктом. Поэтому поверх него делать дистинкт - бессмысленно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
Select 1
UNION
select 1
UNION
select 1
UNION
select 1



Ну и для сравнения ALL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
Select 1
UNION ALL
select 1
UNION ALL
select 1
UNION ALL
select 1
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894339
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, Akina
с Union я пробывал работает не верно, т.к. выдает все подряд

Дано:

Код: sql
1.
2.
3.
4.
id--name1--------name2
22-Крем С--------Крем
38-Крем Плюс----Крем
45-Крем Формула-Крем



Код: sql
1.
2.
3.
SELECT name2 FROM tbl WHERE name2 LIKE '%Крем%'
UNION
SELECT name1 FROM tbl WHERE Prep LIKE '%Крем%'


Выдает:
Крем
Крем С
Крем Плюс
Крем Формула

А должно просто:
Крем

С CASE все работает верно вроде как
Код: sql
1.
2.
3.
SELECT DISTINCT CASE name2 LIKE '%крем%' WHEN 1 THEN name2 ELSE name1 END as name 
FROM tbl
WHERE name2 LIKE '%крем%' OR name1 LIKE '%крем%' 


Выдает:
Крем

на других примерах проверял - все как надо....
...
Рейтинг: 0 / 0
Выборка из одного или другого
    #38894763
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputLagс Union я пробывал работает не верноНет, милок, это ты пробовал неверно. А работает оно так, как ты пробовал.

Код: sql
1.
2.
3.
select name2 from table where name2 like 'шаблон'
union
select name1 from table where name1 like 'шаблон' and  name2 not like 'шаблон'



Добрый Э - ЭхUNION, в отличии от UNION ALL, по определению с "внешним" дистинктом. Поэтому поверх него делать дистинкт - бессмысленно.
Угу.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из одного или другого
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]