Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
1

Работа с ADOQuery и несколько select

26.09.2013, 16:32. Показов 1733. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток форумчане! Такая трабла при запросе с несколькими подзапросами ADOQuery долго висит и не выполняется даже в рантайме. В чем трабла. Sql manegeк for Pgsql выполняет за секунды.

Добавлено через 12 минут
Там еще в каждом подзапросе несколько переменных.

Добавлено через 31 минуту
Пришел к выводу что Квери не хочет считать count(*) в sql запросе.В чем трабла не знаю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2013, 16:32
Ответы с готовыми решениями:

ADOQuery и select
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT * FROM Table_2 WHERE...

Не работает SELECT в ADOQuery
Всем добрый вечер. Пытался начать писать лабу, в которой осуществляется обращения к БД средствами...

Select + JOIN или несколько select
Сейчас занимаюсь проектированием архитектуры своего (будущего) php-приложения и наткнулся на...

ADOQuery, Select из 2х таблиц - как вносить изменения только в одну из них?
В ADOQuery Select`ом делаю выборку из нескольких баз , просматриваю Grid`ом - вношу изменения и все...

11
35 / 35 / 4
Регистрация: 28.05.2013
Сообщений: 180
26.09.2013, 16:35 2
Так Вы передаёте в компонент целый запрос?
0
Волшебник
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
26.09.2013, 16:58 3
Цитата Сообщение от serg87i Посмотреть сообщение
Доброго времени суток форумчане! Такая трабла при запросе с несколькими подзапросами ADOQuery долго висит и не выполняется даже в рантайме. В чем трабла. Sql manegeк for Pgsql выполняет за секунды.

Добавлено через 12 минут
Там еще в каждом подзапросе несколько переменных.

Добавлено через 31 минуту
Пришел к выводу что Квери не хочет считать count(*) в sql запросе.В чем трабла не знаю.
Сделайте более профессионально, перенесите логику на сервер, в виде хранимых процедур.
И после, используйте обращение к процедурам с передачей нужных параметров.
Ах да, и если у вас очень долго выполняется запрос, то не забудьте увеличить CommandTimout.
0
35 / 35 / 4
Регистрация: 28.05.2013
Сообщений: 180
26.09.2013, 17:03 4
Цитата Сообщение от Rapsod Посмотреть сообщение
Сделайте более профессионально, перенесите логику на сервер, в виде хранимых процедур.
И после, используйте обращение к процедурам с передачей нужных параметров.
Ах да, и если у вас очень долго выполняется запрос, то не забудьте увеличить CommandTimout.
Полностью с Вами согласен! И можно за место компонента ADOQuery использовать ADOStoredProc.
0
Волшебник
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
26.09.2013, 17:13 5
serg87i, Когда перенесете запрос в хранимую процедуру, я помогу вам подключить её к вашему проекту.

Добавлено через 58 секунд
Цитата Сообщение от Latino Посмотреть сообщение
Полностью с Вами согласен! И можно за место компонента ADOQuery использовать ADOStoredProc.
Да, с ADOStoredProc проще работать
0
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
26.09.2013, 17:20  [ТС] 6
Если б ума хватило перенес бы а так. Пока долбусь с этим АДО. Почему не считает count() ?????????? Бли пол дня долбусь
0
35 / 35 / 4
Регистрация: 28.05.2013
Сообщений: 180
26.09.2013, 17:22 7
ну а на сам запрос можно взглянуть?
0
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
26.09.2013, 17:48  [ТС] 8
SQL
1
2
3
4
5
6
7
8
9
SELECT 
COUNT(public.zaj_tbl.id_zaj) AS traff, 
(SELECT COUNT(id_radio) AS radio FROM statist.radio_r WHERE statist.radio_r.erdr_num = '11111' GROUP BY erdr_num) AS radio,
(SELECT COUNT(public.zaj_tbl.id_zaj) AS zap FROM   public.zaj_tbl INNER JOIN public.zaj_det_tbl ON (public.zaj_tbl.id_zaj = public.zaj_det_tbl.id_zaj) 
WHERE id_zloch = (SELECT id_zloch FROM zloch_orsksr_tbl  WHERE num_orsksr='11111') AND public.zaj_tbl.id_typ_zaj_rule = '2') AS mon 
FROM  
public.zaj_tbl  INNER JOIN public.zaj_det_tbl ON (public.zaj_tbl.id_zaj = public.zaj_det_tbl.id_zaj)    
WHERE id_zloch = (SELECT id_zloch FROM zloch_orsksr_tbl  WHERE num_orsksr='11111') 
AND public.zaj_tbl.id_typ_zaj_rule = '1'
Добавлено через 10 минут
Цитата Сообщение от serg87i Посмотреть сообщение
SQL
1
2
3
4
5
6
7
8
9
SELECT 
COUNT(public.zaj_tbl.id_zaj) AS traff, 
(SELECT COUNT(id_radio) AS radio FROM statist.radio_r WHERE statist.radio_r.erdr_num = '11111' GROUP BY erdr_num) AS radio,
(SELECT COUNT(public.zaj_tbl.id_zaj) AS zap FROM   public.zaj_tbl INNER JOIN public.zaj_det_tbl ON (public.zaj_tbl.id_zaj = public.zaj_det_tbl.id_zaj) 
WHERE id_zloch = (SELECT id_zloch FROM zloch_orsksr_tbl  WHERE num_orsksr='11111') AND public.zaj_tbl.id_typ_zaj_rule = '2') AS mon 
FROM  
public.zaj_tbl  INNER JOIN public.zaj_det_tbl ON (public.zaj_tbl.id_zaj = public.zaj_det_tbl.id_zaj)    
WHERE id_zloch = (SELECT id_zloch FROM zloch_orsksr_tbl  WHERE num_orsksr='11111') 
AND public.zaj_tbl.id_typ_zaj_rule = '1'
Подождав больше времени выяснил что запрос срабатывает но очень долго думает. Через sql за пару сек. Че за...
0
35 / 35 / 4
Регистрация: 28.05.2013
Сообщений: 180
26.09.2013, 17:53 9
Попробуйте это в процедуру перевести. И будет Вам счастье)
0
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
26.09.2013, 17:56  [ТС] 10
Понял в чем трабла. В таблице около миллиона записей как я потом уже понял все эти записи клиент при выполнении запроса подгружает себе поэтуму тратится столько времени. Так вот если поставить свойство ADOQUERY->Cursorlocation = clUseServer то все вылетает мгновенно.

Добавлено через 1 минуту
Идея логики на сервере конечно то что нужно. А есть какие то мануалы по самому синтаксису pgsql? Использую SQL Manager for PostgreSQL
0
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
26.09.2013, 17:57 11
Ну так,ты курсорами нагружаешь сервер,а если куча таких запросов будет..будет плохо.
0
35 / 35 / 4
Регистрация: 28.05.2013
Сообщений: 180
26.09.2013, 18:11 12
PostgreSQL. Для профессионалов. Авторы: Дж. Уорсли, Дж. Дрейк, Издание: 2003 г.
0
26.09.2013, 18:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2013, 18:11
Помогаю со студенческими работами здесь

ADOQuery несколько одинаковых параметров
День добрый. Запускаю select где одно то же параметризированное значение встречается 8 раз,...

Работа с ADOQuery
В чём назначение данной конкретной строчки? Form1.Label1.Caption :=...

Работа с ADOQuery
Хочу добавить данные в таблицу базы данных с помощью компонента ADOQuery. Делаю так:...

Работа с несколькими DBGrid и ADOQuery
Здравствуйте. Делаю программу для работы с базой данных. В базе данных всего одна таблица. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru