Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
Добрый день, sqlчане! Кто может подсказать. Есть таблица tt Country || City || Столица Россия || Казань Россия || Москва Россия || Саратов США || Вашингтон Германия || Берлин Германия || Дрезден Германия || Франкфурт Франция || Ницца Запрос вида (одна стран-один город) идет во внешнюю систему. Оттуда приходит крыж, если столица "да" иначе пусто. В виде xml (страна - да), но можно и в sql таблицу записать. По тем странам, по которым пришел ответ "да", запрос не отправлять. Следующий запрос такой же отправлять, но уже страну с другим городом если есть. Подскажите Каким образом можно реализовать данную выборку? На ум приходит добавить поле Флаг в таблицу. Пока кол-во записей >0 Запрос. Если пришел ответ "да", то update флаг=1 по полю страна, если пусто то update флаг=1 по полю страна и город. Select country, max(city) from tt where flag=0 group by city order by city Но можно и правильно ли так релизовать select в цикле непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 16:18 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82, Курсор же, а не цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 16:35 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
Курсор работате для каждой строки. А тут необходимо оптимально минимальное кол-вом запросов. Т.е первый запрос отправит: Россия-Казань США-Вашингтон Германия-Берлин Франция- Ницца Ответ придет по США и Германии Второй запрос Россия-Москва И все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 16:44 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82, ну и отправляйте, по одной стране пока не получите +, потом следующую. Sql тут что делать должне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 16:50 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82, Опять зашел любитель циклов в БД. Может надо теорию БД почитать сначала и по-другому начать мыслить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 17:02 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
А что, страны уже начали столицы как перчатки менять? https://ru.wikipedia.org/wiki/Список_столиц_мира Ну а если задача "высосана" из пальца, и там совсем другое, то CURSOR вам в руки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 17:18 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82Курсор работате для каждой строки. А тут необходимо оптимально минимальное кол-вом запросов.В исходном посте вы описали действия "на каждую строку". Или вам нужно одним запросом сделать какую то выборку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 21:22 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
В таблице могут быть несколько тысяч записей. Страна и город как пример. Выборка группировкой по странам и городам одним запросом сразу по всем. Т.е не на каждую строчку Я не любитель циклов, просто приходит на ум только такое действие и понимаю, что в бд это довольно коохозно. Поэтому и спросил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 22:19 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82Выборка группировкой по странам и городам одним запросом сразу по всем. Т.е не на каждую строчкуТак и делайте одним запросом. Непонятно, в чём вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 22:36 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82, «В правильно сформулированном вопросе содержится половина ответа»(с) Попробуйте переформулировать ваш вопрос в соответствии с рекомендациями, пункт 6 . На адекватном репрезентативном, а не абстрактном, наборе данных. И не нужно рассказывать, КАК вы пытаетесь решить задачу. Лучше сосредоточитесь на том, что есть и что должно получиться после всех ваших манипуляций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2019, 06:20 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82, "Внешняя система" - это что? Если таблица в linked server, можно построить выборку с соединением по стране и признаку "столица". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2019, 16:14 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82, Задача чисто академическая и явно высосона из пальца. Внешняя система которая принимает запрос в таком виде это полный бред. По стране(ам) она должна возвращать столицу. Все! Скажите вашему преподу чтобы убился головой об стену. Но если уж очень хочется - делайте как описали с флагом. В тупом цикле (никаких курсоров) по условию EXISTS(SELECT * FROM tt WHERE flag =0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2019, 22:57 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
MindСкажите вашему преподу чтобы убился головой об стену. А вдруг он и есть препод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2019, 08:15 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
Выполняем Код: sql 1. 2. 3. 4. Отправляем. Получаем ответ. Далее для тех, на кого пришёл ответ, проставляем в поле capital единицу, остальным ноль. Типа Код: sql 1. 2. Повторяем, пока первый запрос возвращает хотя бы одну запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2019, 09:05 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
Пардон, UPDATE должен апать только те записи, которые попали в отправленную выборку. Но это, надеюсь, Вы сможете поправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2019, 09:40 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
Akina, спасибо. Попробую. Запрос в виде xml отправляется во внешнюю систему (не sql), оттуда приходит также xml с ответом. Парсится и записывается в таблицу. Необходимо наименьшее оптимальное кол-во запросов для заполнения всех записей. Не препод и не студнет. По факту в задаче конечно не города и страны,а узко экономические показатели, но смысл такой же, они просто более художественны в восприятии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2019, 23:51 |
|
||
|
Выборка в цикле
|
|||
|---|---|---|---|
|
#18+
hunty82Необходимо наименьшее оптимальное кол-во запросов для заполнения всех записей.Это относится не к оптимальному написанию запросов к MSSQL, а к взаимодействию с этими внешними системами. Например, если системы позволяют написать "групповой запрос", то можно группировать запрос по системам, и отсылать по одному запросу на систему. Если же такой возможности нет, то "наименьшее кол-во запросов для заполнения всех записей" будет равно количеству записей, какие ещё варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2019, 08:21 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=88&tid=1687236]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 342ms |

| 0 / 0 |
