|
|
|
Помогите составить запрос
|
|||
|---|---|---|---|
|
#18+
В общем в поиске вроде ничего не нашел. Проблема в следующем: Есть набор позиций в БД принадлежащих разным фирмам. Необходимо выбрать записи таким образом, чтобы фирмы чередовались как можно чаще. Допустим есть две фирмы. Запись 1 - фирма 1 Запись 2 - фирма 2 Запись 3 - фирма 2 Запись 4 - фирма 2 Запись 5 - фирма 1 Необходимо чтобы результат запроса был следующим: Запись 1 - фирма 1 Запись 2 - фирма 2 Запись 5 - фирма 1 Запись 3 - фирма 2 Запись 4 - фирма 2 Причем необходимо в будущем учесть постраничную навигацию. То есть в конце запроса необходим limit. Что посоветуете? Может ссылки есть уже на готовые решения или статьи? Была мысль формировать спектр названий фирм и выбирать по одной записи каждой фирмы с лимитом (i,1), где записи отсутствовали ничего не возвращалось. Но это уж слишком сложно (количество одиночных запросов=кол-во фирм*кол-во записей) получается, наверняка должно быть решение покрасивше. Буду рад совету, помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 11:20 |
|
||
|
Помогите составить запрос
|
|||
|---|---|---|---|
|
#18+
здесь написано и как сделать постраничную выборку и отсортировать в нужном вам порядке... например, есть таблица list_firm(id int,firma varchar) тогда, если MySQL версии 4.1, можно реализовать через подзапрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 15:18 |
|
||
|
Помогите составить запрос
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ! Потестировал на таблице с малым количеством записей! Работает великолепно. Но к сожалению, в таблице для которой запрос пишется 550 000 записей. И на ней запрос можно сказать виснет капитально. Может подскажешь как избежать этого? Или с таким количеством записей в принципе такое сложно реализовать? Решение очень красивое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2005, 08:03 |
|
||
|
Помогите составить запрос
|
|||
|---|---|---|---|
|
#18+
в статье же написано, что это самый не эффективный способ...попробуйте второй метод через создание временных таблиц, который "Вариант 2 «Эффективный, специфический для T-SQL»."... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2005, 10:05 |
|
||
|
Помогите составить запрос
|
|||
|---|---|---|---|
|
#18+
ewgrafusСпасибо за ответ! Потестировал на таблице с малым количеством записей! Работает великолепно. Но к сожалению, в таблице для которой запрос пишется 550 000 записей. И на ней запрос можно сказать виснет капитально. Может подскажешь как избежать этого? Или с таким количеством записей в принципе такое сложно реализовать? Решение очень красивое. поставь LIMIT 0,50(100, 150) в конце запроса и индексы построить правильно надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2005, 11:48 |
|
||
|
Помогите составить запрос
|
|||
|---|---|---|---|
|
#18+
Diabloпоставь LIMIT 0,50(100, 150) в конце запроса и индексы построить правильно надо Ставил конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2005, 10:38 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32873920&tid=1854428]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 333ms |

| 0 / 0 |
