powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос
7 сообщений из 7, страница 1 из 1
Помогите составить запрос
    #32869544
ewgrafus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем в поиске вроде ничего не нашел.

Проблема в следующем:
Есть набор позиций в БД принадлежащих разным фирмам. Необходимо выбрать записи таким образом, чтобы фирмы чередовались как можно чаще.
Допустим есть две фирмы.
Запись 1 - фирма 1
Запись 2 - фирма 2
Запись 3 - фирма 2
Запись 4 - фирма 2
Запись 5 - фирма 1
Необходимо чтобы результат запроса был следующим:
Запись 1 - фирма 1
Запись 2 - фирма 2
Запись 5 - фирма 1
Запись 3 - фирма 2
Запись 4 - фирма 2


Причем необходимо в будущем учесть постраничную навигацию. То есть в конце запроса необходим limit.

Что посоветуете? Может ссылки есть уже на готовые решения или статьи?


Была мысль формировать спектр названий фирм и выбирать по одной записи каждой фирмы с лимитом (i,1), где записи отсутствовали ничего не возвращалось. Но это уж слишком сложно (количество одиночных запросов=кол-во фирм*кол-во записей) получается, наверняка должно быть решение покрасивше.


Буду рад совету, помощи.
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32870356
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь написано и как сделать постраничную выборку и отсортировать в нужном вам порядке...

например,
есть таблица list_firm(id int,firma varchar)
тогда, если MySQL версии 4.1, можно реализовать через подзапрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select (
	select count(*) 
	from list_firm as test_2
	where test_2.id_test <= test_1.id_test and test_2.firma=test_1.firma) as rank,
     test_1.id_test,
     test_1.firma
from list_firm as test_1
order by rank,firma
список отсортированных записей firma1,firma2,firma1,firma2... а из него уже и делать постраничную выборку...
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32871360
ewgrafus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ! Потестировал на таблице с малым количеством записей! Работает великолепно. Но к сожалению, в таблице для которой запрос пишется 550 000 записей. И на ней запрос можно сказать виснет капитально.
Может подскажешь как избежать этого? Или с таким количеством записей в принципе такое сложно реализовать?

Решение очень красивое.
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32871572
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в статье же написано, что это самый не эффективный способ...попробуйте второй метод через создание временных таблиц, который "Вариант 2 «Эффективный, специфический для T-SQL»."...
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32871874
Diablo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ewgrafusСпасибо за ответ! Потестировал на таблице с малым количеством записей! Работает великолепно. Но к сожалению, в таблице для которой запрос пишется 550 000 записей. И на ней запрос можно сказать виснет капитально.
Может подскажешь как избежать этого? Или с таким количеством записей в принципе такое сложно реализовать?

Решение очень красивое.

поставь LIMIT 0,50(100, 150) в конце запроса и индексы построить правильно надо
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32873920
ewgrafus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Diabloпоставь LIMIT 0,50(100, 150) в конце запроса и индексы построить правильно надо
Ставил конечно.
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32873924
ewgrafus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kulpavelв статье же написано, что это самый не эффективный способ...попробуйте второй метод через создание временных таблиц, который "Вариант 2 «Эффективный, специфический для T-SQL»."...
Попробую
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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