Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам / 16 сообщений из 16, страница 1 из 1
08.07.2015, 17:08:59
    #39002642
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Здравствуйте.
Имею задачку, которую я смог решить тремя отдельными запросами к базе данных, но вот, не могу понять, как то же самое сделать одним запросом или выборкой. Приведу пример своего решения по пунктам:
1)
SELECT iid, iname, kw, itext1
FROM products
WHERE iname LIKE 'search %'

2)
SELECT iid, iname, kw, itext1
FROM products
WHERE (kw LIKE 'search%') AND (iname NOT LIKE 'search %')

3)
SELECT iid, iname, kw, itext1
FROM products
WHERE (itext1 LIKE 'search %') AND ((iname NOT LIKE 'search %') AND (kw NOT LIKE 'search %'))

Таким образом я получил 3 выборки, которые дают мне возможность получить результат в определенном порядке

Сначала 1) я получаю данные с столбца "iname", далее 2) получаю строки с столбца "kw", но уже не повторяя полученные строки с колонки "iname" и далее 3) получаю строки совпадающие по колонке "itext1", но уже не повторяя полученные строки по совпадениям в колонках "iname" и "kw".

Но вот беда. Мне нужно теперь это все объединить в один запрос, сохранив при этом порядок выборки по колонкам и условиям, то есть важна последовательность.

Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
08.07.2015, 17:16:13
    #39002657
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
antonenkoabважна последовательностьпри отсутствии ORDER BY и даже GROUP BY... ага...
...
Рейтинг: 0 / 0
08.07.2015, 17:22:44
    #39002664
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
UNION ALL?
...
Рейтинг: 0 / 0
08.07.2015, 17:25:44
    #39002668
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Akinaantonenkoabважна последовательностьпри отсутствии ORDER BY и даже GROUP BY... ага...

Дело в том, что сортировка ORDER BY не нужна,
а про GROUP BY я не знаю как в этом случае может помочь
...
Рейтинг: 0 / 0
08.07.2015, 17:46:22
    #39002689
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
antonenkoab , поскольку нет сортировки, записи в каждой выборке будут отдаваться в произвольном порядке - в т.ч. вполне может быть, что сегодня так, а завтра иначе. Так что какой может быть разговор о порядке, а тем более о его важности?

Что же до группировки - она (если не задано иначе) выполняет также и сортировку результата. Маны читайте...

PS. Я уже понимаю, что формулировать задачу у Вас получается, прямо скажем... тогда хоть примером покажите, чего надо.
...
Рейтинг: 0 / 0
08.07.2015, 17:46:35
    #39002690
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
SharuPoNemnoguUNION ALL?
Да, действительно, вроде помогло. Очень просто)). Спасибо.
...
Рейтинг: 0 / 0
08.07.2015, 17:51:22
    #39002704
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
antonenkoabвроде помоглоОбъединить - да. А то, что они будут идти всегда в таком именно порядке - не гарантировано ничем.
...
Рейтинг: 0 / 0
08.07.2015, 17:54:38
    #39002714
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Akina,

Спасибо. Просто нам не нужна четкая последовательность в результатах поиска. Последовательность может меняться - это допустимо, но в моем случае важно что-бы сначала были показаны результаты по первой колонке, потом сразу следом по второй и так далее. Я применил UNION ALL и вижу что получается желаемый результат. Спасибо
...
Рейтинг: 0 / 0
08.07.2015, 18:03:33
    #39002736
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Чтобы ГАРАНТИРОВАТЬ, что так будет всегда, что записи не перемешаются, нужно принять соотв. меры - в т.ч. и ввести сортировку. Например, по такому шаблону:

Код: sql
1.
2.
3.
4.
5.
6.
(SELECT 1 AS querynum, остальные поля FROM остальной текст запроса 1)
UNION ALL
(SELECT 2, остальные поля FROM остальной текст запроса 2)
UNION ALL
(SELECT 3, остальные поля FROM остальной текст запроса 3)
ORDER BY 1
...
Рейтинг: 0 / 0
08.07.2015, 18:10:03
    #39002748
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Akina,

Это интересно. Я подумаю. Мне нужно почитать документацию об этом. Спасибо
...
Рейтинг: 0 / 0
08.07.2015, 18:15:42
    #39002757
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
antonenkoabМне нужно почитать документацию об этом.
http://dev.mysql.com/doc/refman/5.6/en/union.html
...
Рейтинг: 0 / 0
08.07.2015, 22:26:55
    #39002921
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
antonenkoab,

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT iid, iname, kw, itext1
FROM products
WHERE (itext1 LIKE 'search %') OR (iname LIKE 'search %') OR (kw LIKE 'search %')
ORDER BY 
  (iname NOT LIKE 'search %') ,
  (kw NOT LIKE 'search %'),
  iid
...
Рейтинг: 0 / 0
08.07.2015, 22:29:07
    #39002924
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Хотя весьма вероятно, что UNION будут обработаны быстрее...
...
Рейтинг: 0 / 0
09.07.2015, 17:16:20
    #39003780
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Akina,
Извините, а почему в этом запросе
Код: sql
1.
2.
3.
4.
5.
6.
(SELECT 1 AS querynum, остальные поля FROM остальной текст запроса 1)
UNION ALL
(SELECT 2, остальные поля FROM остальной текст запроса 2)
UNION ALL
(SELECT 3, остальные поля FROM остальной текст запроса 3)
ORDER BY 1


ORDER BY 1, а не ORDER BY querynum?
...
Рейтинг: 0 / 0
09.07.2015, 18:34:24
    #39003895
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
А какая разница, указывать имя или порядковый номер? номер - короче. Да и при правке запроса имя меняют реже, чем порядок полей.
...
Рейтинг: 0 / 0
09.07.2015, 19:27:43
    #39003918
antonenkoab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам
Akina,
Ясно, спасибо.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как объединить несколько выборок из БД в одну и сохранить порядок выборки по колонкам / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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