|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.01.2023, 13:10 | #1 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Причудливая сортировка по условию (больше 300 условий в запросе)
Доброе время суток форумчане,
Есть выполненный запрос с таблицы 1 (в DataSet1), в котором у каждой строки (а их более 300) есть ID. Строки с ID расположены НЕ по порядку (после сортировки пользователя). Есть таблица 2, в которой строки привязаны к таблице 1 (по ID), т.е. связь один ко многим. Вопрос: Каким образом, можно не дергая заново запрос к таблице 1 (в DataSet1), выполнить выборку из таблицы 2 (DataSet2), чтобы записи в DataSet2, были упорядочены в порядке поля ID (DataSet1). (Чтоб вывести информацию в Word, на основании результатов в двух DataSet, т.е. чтоб делать всего лишь один цикл по DataSet, а не количеством строк DataSet1). Конструкции «order by» или «union all» не помогают, т.к. они расчитаны только до 255 параметров (строк результата), т.е выпадает ошибка. А у меня больше 300 строк в результате. Можно конечно без сортировки, но тогда мне придется делать 300 циклов в DataSet2 (чтоб соотнести строки с двух DataSet), это как-то не очень хотелось бы… наверно приведу запрос который выдает мне результат, в том прядке, который мне нужен (нервных просьба не смотреть ) Код:
Последний раз редактировалось KBO; 08.01.2023 в 13:14. |
08.01.2023, 13:47 | #2 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 493
|
Для этого используют отдельное поле для сортировки.
стимулятор https://yoomoney.ru/to/41001303250491
|
08.01.2023, 13:54 | #3 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Я не знаю каким образом пользователь отсортирует строки...
т.е. это поле вычисляемое??? или вставлять отдельное поле в базу??? и как его заполнять в таком случае? Что вы имели в виду, можно чуть подробнее??? Последний раз редактировалось KBO; 08.01.2023 в 14:00. |
08.01.2023, 14:22 | #4 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 493
|
Так стоп, давайте по порядку, что там у вас за БД?
стимулятор https://yoomoney.ru/to/41001303250491
|
08.01.2023, 14:27 | #5 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
|
08.01.2023, 14:42 | #6 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 493
|
http://www.ibase.ru/joins/
По идее просто соединяете первую таблицу со второй, явным join и не используете order by, раз у вас нет поля для сортировки.
стимулятор https://yoomoney.ru/to/41001303250491
Последний раз редактировалось Valick; 08.01.2023 в 14:44. |
08.01.2023, 15:04 | #7 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Я конечно ничего против ваших ответов не имею,
но мне ща пришла мысля посмотрите пожалуйста на такой вариант с использованием вычисляемого поля и сортировки по нему Код:
Последний раз редактировалось KBO; 08.01.2023 в 15:13. |
08.01.2023, 15:22 | #8 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 493
|
Зачем?
Я так понимаю правильная последовательность строку у вас уже содержится в where вы же её откуда-то принимаете, для того что бы сформировать запрос. Просто сделайте объединение двух таблиц (join) и забудтье про запросы в циклах. Результат из БД может быть в любой последовательности, упорядочить его можно уже относительно имеющейся последовательности. У меня нет доступа к FireBird устанавливать, настраивать и разбираться в тонкостях диалекта нет ни времени ни желания. Поэтому ответы несколько абстракные. Но сам по себе SQL он и в Африке SQL и как декларативному языку циклы ему противоестественны.
стимулятор https://yoomoney.ru/to/41001303250491
|
08.01.2023, 15:33 | #9 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
а не кто и не говорил о запросах в цикле (я не хочу "положить" сервер).
У меня всегда был один запрос (я и так против бесконтрольного числа запросов к БД, а вы еще говорите о запросе в циле), что повторяется в одном запросе, так это "case" Да и насчет "where", если я правильно вас понял, он не поддерживает последовательность (которая указана в нем) Последний раз редактировалось KBO; 08.01.2023 в 15:37. |
08.01.2023, 15:54 | #10 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 493
|
Вы эту последовательность передаёте в запрос, значит она уже у вас есть, я так полагаю она у вас хранится в массиве.
стимулятор https://yoomoney.ru/to/41001303250491
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция ЕСЛИ подходит только для 1 условия, а если условий больше? | Slavatron1984 | Microsoft Office Excel | 2 | 08.01.2012 22:07 |
сортировка в запросе | west23 | Microsoft Office Access | 1 | 19.05.2010 00:32 |
Как задать в формулу больше чем 7 условий IF??? | xXx666 | Microsoft Office Excel | 2 | 29.10.2009 22:55 |
Как быть если условий больше 7? | 911old | Microsoft Office Excel | 1 | 20.08.2009 16:08 |