Сортировка вывода по привязке к скармливаемому списку

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#1

19 мар 2021, 14:52

Итак!
Что имею )
Имею БД МИС, которая заполялась не один год. Люди вносились не по алфавиту. У них идентификатор (PATIENTS_ID) в системе.
Имею файл ексель. В котором несколько вкладок. Сначала составляется планируемый список людей, потом фактический, реестр, результат ...
21-03-19-135132.png
(Результат алф был создан уже для алфавитирования для вставки номеров.)
Реестр распечатывается и отправляется в лабораторию. Результат сохраняется и пересылается дальше по почте для обработки другими. Обзвон, статистика и хз для чего еще.
Есть так же вкладка, в которой я сортирую по алфавиту чтоб подать в процедурку в распечатанном виде.
Процедурка отмечает галочками кто по факту пришел. Но это скорее для себя.
Параллельно с процедурами идет забивка в портал лаборатории.
Разумеется по факту. Как пришли люди так их и забивают в портал. Т.е. вообще никак не связано с БД МИС.
Далее... на следующий день беру оттуда референсные значения. И выложены они там именно в том фактическом варианте. Как и были внесены. Т.е. я из фактической вкладки копирую данные во вкладку "Результаты" и дополняю значениями.
Полученный результат сохраняется как отдельный файл (копируется файл, остальные вкладки удаляются). отсылается почтой.
Дальше у результата теста есть определенный параметр.
Они выделены жирным.
21-03-19-133925.png
Вот их соответственно у столбца фильтрую (больше или равно 1). Он мне их дает. Я копирую и скармливаю SQL.
Но SQL мне выдает отсортированным по PATIENTS_ID
Но это совершенно другой порядок, нежели тот, что я ему скормил )
По запрошенным данным заполняются телефоны. Файл копируется. Остальные вкладки удаляются. Удаляются лишние строки. Отправляется почтой по другому адресу.
Вся тирада для того, чтобы объяснить зачем нужен файл xls.

В БД к примеру хранятся так
21-03-19-144003.png
Пришли они так (и соответственно их так записали в портал и в итоговом результате такой же вариант).
21-03-19-144406.png
У жирных нужны данные
21-03-19-144459.png
Фильтрую
21-03-19-144627.png
Копирую отфильтрованное. Прогоняю через скрипт от demonlibra
Вставляю в запрос.
Вывод будет в варианте как записи хранятся в БД. Т.е. по PATIENTS_ID
21-03-19-144930.png
Возможно ли вывести именно в том порядке, в котором я скармливаю ФИО?

Код: Выделить всё

SELECT PATIENTS_ID
,MOBIL_TELEFON
,FULL_NAME
FROM BD.dbo.PATIENTS
WHERE FULL_NAME IN ('ВАСИЛЬЕВ ВАСИЛИЙ ВАСИЛЬЕВИЧ','ФЕДУЛОВ ФЕДУЛ ФЕДУЛОВИЧ','СЕМЕНОВ СЕМЕН СЕМЕНОВИЧ')

Решение rogoznik » 22 мар 2021, 18:19
broken, должен будешь :-D

Код: Выделить всё

DECLARE @FIO_tmp table(
my_id int IDENTITY(1,1),
fiot_tmp varchar(100) NOT NULL
)
INSERT запрос собрать скриптом

Код: Выделить всё

sql="INSERT INTO @FIO_tmp (fiot_tmp) VALUES"

OLDIFS=$IFS
IFS=','

arrFio=$1

for fio in $arrFio
do
    sql="$sql ('$fio'),"
done

IFS=$OLDIFS

sql=$(echo ${sql%?})

echo $sql
Запускать так

Код: Выделить всё

bash script_name "Ф И О,Ф И О,Ф И О"
Ну и дальше

Код: Выделить всё

SELECT fiot_tmp, my_id FROM @FIO_tmp ORDER BY my_id

Перейти к ответу ➙

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#2

19 мар 2021, 14:58

broken писал(а):
19 мар 2021, 14:52
Возможно ли вывести именно в том порядке, в котором я скармливаю ФИО?
Как вариант на скорую руку - можно скриптом собрать такой запрос

Код: Выделить всё

SELECT PATIENTS_ID
,MOBIL_TELEFON
,FULL_NAME
FROM BD.dbo.PATIENTS
WHERE FULL_NAME = 'ВАСИЛЬЕВ ВАСИЛИЙ ВАСИЛЬЕВИЧ'
UNION
SELECT PATIENTS_ID
,MOBIL_TELEFON
,FULL_NAME
FROM BD.dbo.PATIENTS
WHERE FULL_NAME = 'ФЕДУЛОВ ФЕДУЛ ФЕДУЛОВИЧ'
UNION
SELECT PATIENTS_ID
,MOBIL_TELEFON
,FULL_NAME
FROM BD.dbo.PATIENTS
WHERE FULL_NAME = 'СЕМЕНОВ СЕМЕН СЕМЕНОВИЧ'
Значения вернет в нужном порядке.
ИзображениеИзображение

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#3

19 мар 2021, 15:09

Тоже самое хотел предложить, но не успел.
Добавлю, что это всё можно реализовать в том сценарии, который я писал.
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#4

19 мар 2021, 15:13

Еще можно (наверное) выполнить сортировку данных в исходной таблице, а после использовать order by в SQL запросе.
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#5

19 мар 2021, 15:15

Ну сейчас то так и происходит. Добавлен "результат алф". В нем люди выстраиваются по алфавиту и в запросе order by FULL_NAME

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#6

19 мар 2021, 15:17

broken писал(а):
19 мар 2021, 14:52
WHERE FULL_NAME IN
стоит отметить как будет работать выборка при IN в частном случае - селект сканирует таблицу по порядку и проверяет вхождение FULL_NAME в условия WHERE
И если нашел то выводит в том порядке в котором она ему попалась. Отсюда и результат)

юнион должен сработать вполне , но навреное может быть тяжеловато на много записей.
Можно еще по входному списку создать temporary табличку с вставкой по нужному порядку со своим инкрементом идентификатора, и будет по чему травить order by при селекте или джоине.
Изображение
   
Изображение

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#7

19 мар 2021, 18:42

Ну что как успехи? Что-то придумалось?
broken, а почему условие по ФИО, а не по PATIENTS_ID? Ведь может оказаться полный тезка
ИзображениеИзображение

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#8

22 мар 2021, 10:00

Пока пришел к
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.

В основной таблице данные хранятся в другом порядке. Думаю ID во временной смысла нет, поскольку наполнение и будет как ID... т.е. храниться то в том виде, в котором я объявил...
правда и объявление отличается от того... но это переделать не проблема. Здесь же опять же ругается на какую-то склярную. Впервые вижу )
Вложения
21-03-22-100103.png

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#9

22 мар 2021, 10:48

Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.
ИзображениеИзображение

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#10

22 мар 2021, 11:13

Спасибо за уточнение!
Не вышел каменный цветок ) Всё равно выводит по тому порядку, в котором хранится в основной таблице )
Но вариант уже хотя бы работает ))) не имел дела с временными таблицами :hoho:

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#11

22 мар 2021, 11:44

Опять имею ошибку скалярную переменную... :hm:
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.


PS пытаюсь хотя бы из одной времянки вытянуть нужный порядок...
Вложения
21-03-22-114640.png

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#12

22 мар 2021, 12:07

broken писал(а):
22 мар 2021, 11:44
SET @row_number = 0 ;
Переменная не объявлена
Нужно сперва сделать

Код: Выделить всё

DECLARE @row_number INT;
ИзображениеИзображение

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#13

22 мар 2021, 12:12

Странно, что здесь об этом не упомянули

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#14

22 мар 2021, 12:15

broken, так надо документацию читать, а потом уже искать статьи с примерами использования. Тогда будет меньше ошибок
ИзображениеИзображение

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#15

22 мар 2021, 14:38

Код: Выделить всё

       (@MyCounter,
        CHAR( ( @MyCounter + ASCII('a') ) )
       );
непонятно. Судя по всему оно как раз и прибавляет. Ибо

Код: Выделить всё

SET @row_number = @row_number + 1;
Все 4 строки получаются с num=1.
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#16

22 мар 2021, 15:02

Вобщем, с одной стороны вроде как для того чтобы номер увеличивался - нужен проход...
Но с другой стороны это же номера строк... А номер строки уже есть.... Почему тогда он везде один и тот же? :blink2:

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#17

22 мар 2021, 15:06

broken,
1. SELECT @row_number этот кусок возвращает значение переменной @row_number, а оно после SET @row_number = @row_number + 1; равно 1
2. В таблице @FIO_tmp у тебя есть только поле fiot_tmp
ИзображениеИзображение

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#18

22 мар 2021, 15:12

т.е. row_number нужно еще и в values прописывать?

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#19

22 мар 2021, 15:14

broken, в текущем виде запроса бесполезно ибо все равно будет для каждой строки одно значение, ну и вызовет ошибку, т.к. в таблице только одно поле.
ИзображениеИзображение

Аватара пользователя

rogoznik
Сообщения: 10038
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Сортировка вывода по привязке к скармливаемому списку

#20

22 мар 2021, 16:36

Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.

Мне вот интересно ты эти ФИО подставляешь руками или скриптом?
ИзображениеИзображение

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость