powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как положить в метаданные сервера сложный запрос на выборку
21 сообщений из 21, страница 1 из 1
Как положить в метаданные сервера сложный запрос на выборку
    #40131252
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, форумчане !
Есть большой запрос на выборку из нескольких таблиц с подзапросами типа select from (select).. + join (select..) + select from table1, (select ..)
Есть ли возможность как-то внести его в БД (метаданные).
- UDF не позволяет возвращать набор данных,
- SP не позволяет делать ORDER BY и WHERE к возвращаемому результсету, а также использовать ее в подзапросах,
- VIEW не разрешает подзапросы.

Версия сервера 5.1.73
Вопрос: есть ли средство для решения этой проблемы ?

ЗЫ. В MS SQL/Interbase/Oracle/PostgeSQL эта проблема легко решается через UDF. Как это можно сделать в MySQL ?

Спасибо за любые советы и полезные ссылки.
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131261
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTE?
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131267
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинСТЕСТЕ с вер.8

MsGuns,

авторЕсть ли возможность как-то внести его в БД (метаданные).ничего непонятно, что и откуда куда вносить
если есть запрос - его просто надо выполнить
в любом случае любой запрос можно разбить на части используя временные таблицы

как вариант подготовить -выполнить см. PREPARE-EXECUTE
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131275
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov->"ничего непонятно, что и откуда куда вносить"

Есть рабочий запрос, который будет часто выполняться в разных клиентах (phpmyadmin, dbforge и др).
Очень неудобно (особенно на моб.устройствах) его откуда-то копипастить и потом еще дописывать where, order by, group by, having и т.д. Нужно, чтобы можно было его запускать как часть запроса, например
select * from udf_selfulluserinfo() where dogdate = now() and user_sate = 1 order by user_address
такой простой запрос может написать по простейшей инструкции любой сотрудник конторы (провайдер инета).
Вместо того, чтобы иметь дело с простыней в 100 строк, в которой он точно чего-то пакосячит :)
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131276
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я было подумал написать хранимку с параметрами для условий выборки и указанием колонок сортировки, а в ней с помощью динамического запроса делать нужные манипуляции, но колонок много (около 20) и придется писать зубодробительную логику на 200 строк.
Поэтому от такого варианта отказался.
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131289
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

Как положить в метаданные сервера сложный запрос на выборку
если схема известна то сделать доп таблицы для складывания промежуточных данных.

обычная бизнес-логика
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131291
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не выход. Этим запросом может пользоваться ндцать человек, контора большая, причем одновременно. Одна таблица на всех для РАЗНЫХ данных - это как ?
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131292
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, кажись дошло :)
1. Есть SP, которая выполняет простыню и кладет результат полной выборки в таблицу, предварительно дропая ее, если он уже есть.
2. Сотрудник набирает сначала Call SP(), а потом нужный простой Select * from <фиксированное имя таблицы > where .. order by ..
3. Наслаждается результатом

Я правильно понял ?
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131294
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

полную бизнес-логику опишите.
ничего непонятно. Если в запросе 55 параметров - то нужна таблица параметров, в которую будут кидать данные клерки
Собирать запрос PREPARE-EXECUTE

Лучше по простому, как в слесарной мастерской -
"Я начальник у меня 5 отелов. каждый отдел выгружает такую то информацию и т.д. и. т.п

Если кто-то поймет - подскажут
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131295
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns
Блин, кажись дошло :)
1. Есть SP, которая выполняет простыню и кладет результат полной выборки в таблицу, предварительно дропая ее, если он уже есть.
2. Сотрудник набирает сначала Call SP(), а потом нужный простой Select * from <фиксированное имя таблицы > where .. order by ..
3. Наслаждается результатом

Я правильно понял ?
я думаю да
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131302
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns
Блин, кажись дошло :)
1. Есть SP, которая выполняет простыню и кладет результат полной выборки в таблицу, предварительно дропая ее, если он уже есть.
2. Сотрудник набирает сначала Call SP(), а потом нужный простой Select * from <фиксированное имя таблицы > where .. order by ..
3. Наслаждается результатом

Я правильно понял ?


+ почитайте то, что вы писали в первом месыдже
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131330
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns
VIEW не разрешает подзапросы.
https://dev.mysql.com/doc/refman/5.7/en/create-view.html A view can be created from many kinds of SELECT statements. It can refer to base tables or other views. It can use joins, UNION, and subqueries .
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131334
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
MsGuns
VIEW не разрешает подзапросы.
https://dev.mysql.com/doc/refman/5.7/en/create-view.html A view can be created from many kinds of SELECT statements. It can refer to base tables or other views. It can use joins, UNION, and subqueries .


Subqueries cannot be used in the FROM clause of a view.
https://dev.mysql.com/doc/refman/5.6/en/view-restrictions.html
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131335
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

здесь
http://download.nust.na/pub6/mysql/doc/refman/5.1/en/subquery-errors.html
топ-ошибки в 5.1 в подзапросах. Если есть что-то похожее, то укажите
если 5.1 то смотрим на 5.1
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131339
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns
Subqueries cannot be used in the FROM clause of a view.
https://dev.mysql.com/doc/refman/5.6/en/view-restrictions.html
Отличный повод для апгрейда.
Ветке 5.1 уже 13 лет.
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131353
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
MsGuns
Subqueries cannot be used in the FROM clause of a view.
https://dev.mysql.com/doc/refman/5.6/en/view-restrictions.html
Отличный повод для апгрейда.
Ветке 5.1 уже 13 лет.

Очень хороший совет. Если б это был мой сервер, то я бы вообще ушел от мускула подальше, потому что УГ.

Спасибо Алексу Устинову - он навел меня на решение. Оно, конечно, имеет недостатки (сбор и выборка данных разными запросами, которые не в одной транзакции), с которыми, впрочем, можно смириться ибо они не слишком критичны.
В итоге все уже сделано и работает :)
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131365
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

miksoft , Akina посоветуют больше и лучше чем я
временные таблицы ( если будут использоваться в SP) - создаются в своей сессии и не пересекаются с "другими".
В бытность 5.1 часто использовались. Да и сейчас самый лучший метод ускорить запрос.
если покопать здесь в поиске - то можно найти кучу информации тех времен когда 5.1 была в продакшене.

и я в то время только начинал знакомиться с MySQL
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131371
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
MsGuns,

miksoft , Akina посоветуют больше и лучше чем я
временные таблицы ( если будут использоваться в SP) - создаются в своей сессии и не пересекаются с "другими".
В бытность 5.1 часто использовались. Да и сейчас самый лучший метод ускорить запрос.
если покопать здесь в поиске - то можно найти кучу информации тех времен когда 5.1 была в продакшене.

и я в то время только начинал знакомиться с MySQL


Насколько я знаю, временные таблицы существуют только в контексте транзакции. Когда она завершается с любым исходом, эти таблицы автоматически уничтожаются. Т.к. в моем-Вашем решении собственно запрос состоит из двух шагов (sp + select), т.е. двух транзакций, то Select будет пытаться выбирать из несуществующей таблицы. Поэтому sp создает обычную, а не временную, таблицу.
Разве не так ?
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131389
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns
временные таблицы существуют только в контексте транзакции
в контексте сессии.

В других СУБД бывает иначе, но у MySQL соответствующих опций не вижу.
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131390
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,
авторЗЫ. В MS SQL/Interbase/Oracle/PostgeSQL эта проблема легко решается через UDF. пример покажите, по-моему мы ходим вокруг да около...
если речь о параметризированном запросе - то см. CONCAT-PREPARE-EXECUTE
...
Рейтинг: 0 / 0
Как положить в метаданные сервера сложный запрос на выборку
    #40131392
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ветка плавно перетекает в тихий холивар :) В MySQL опыта почти нет никакого, а какой был, весь позабыт.
Возникла проблема, связанная именно с этим типом сервера. Мне помогли ее решить. Не идеально, но на данный момент тех, кто меня об этом попросил, вполне устроило. Они даже проставились :)

Всем спасибо, тема исчерпана.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как положить в метаданные сервера сложный запрос на выборку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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