Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

[Oracle ]Count records [D7]


Страницы:   1 2 3

McSimm2 ©   (2003-07-09 11:34:00) 

Есть 2 таблицы. Как посчитать общее число записей в таблицах ?

Делаю вот так :

SELECT SUM ( QUERY.sum1 + QUERY.sum2) as AllSum
FROM (SELECT 0 AS sum1, COUNT (*) AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart
FROM table1)
UNION
SELECT COUNT (*) AS sum1, 0 AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart
FROM table2)) QUERY

Может как нить покороче можно ???


DenK_vrtz   (2003-07-09 15:06:00) [1]

McSimm2 (09.07.03 15:01), блин клинтон, вот с этого и надо было начинать!!!


McSimm2   (2003-07-09 15:01:00) [2]

DenK_vrtz © (09.07.03 14:52)
Да ладно не может такого быть. Если в первом стоит distinct, а между первым и вторым и вторым и третьим union all - то как же они появятся!
К тому же я свою ошибку уже осознал - совокупность n_lc+jeu+rajon
даёт уникальность для записи, так что distinct мне как корове седло был нужен. Во всей каше из 3 таблиц - каждая запись уникальна!


DenK_vrtz   (2003-07-09 15:00:00) [3]

McSimm2, я занл, что будет долгоработать DenK_vrtz © (09.07.03 14:44), но интересно было на сколько :-)
а в McSimm2 (09.07.03 14:21) повторение строк будет обязательно!


McSimm2   (2003-07-09 14:57:00) [4]

Johnmen © (09.07.03 14:50)
Что то не понял чего я там где переврал ? :)


DenK_vrtz   (2003-07-09 14:52:00) [5]

McSimm2 (09.07.03 14:48), а в нем будут повторяющиеся стоки, поверь! :-)


Johnmen   (2003-07-09 14:50:00) [6]

>McSimm2 (09.07.03 14:40)
>надо получить общее колич.неповторяющихся в трех таблицах

Johnmen © (09.07.03 13:54)
И не надо перевирать текст приводимых запросов...
:)


McSimm2   (2003-07-09 14:48:00) [7]

DenK_vrtz © (09.07.03 14:44)
Полторы минуты отрабатывал 1.36 сек
Самый быстрый остаётся
McSimm2 (09.07.03 14:21)
150 милисекунд


DenK_vrtz   (2003-07-09 14:44:00) [8]

SELECT count(*) FROM
(SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM (SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)
group by ulica, dom, kvart, n_lc, rajon, jeu)

еще вариант!


McSimm2   (2003-07-09 14:40:00) [9]

надо получить общее колич.неповторяющихся в трех таблицах


DenK_vrtz   (2003-07-09 14:34:00) [10]

McSimm2 (09.07.03 14:30), еще бы скорость не увеличилась.
union выкидывает повторяющиеся строки, а union all кидает все в одну кучу!


Johnmen   (2003-07-09 14:32:00) [11]

Один принципиальный момент -
#надо отдельно получить колич.неповторяющихся для трех таблиц и потом их сложить, или
#надо получить общее колич.неповторяющихся в трех таблицах
?


McSimm2   (2003-07-09 14:30:00) [12]

DenK_vrtz © (09.07.03 14:24)
Ты чего кричишь ???
Union без distinct работает горааздо дольше нежели
union all без того же distinct.
Зачем distinct писать если выяснилось что он повторяющиеся строки выкинет?
В первом запросе его оставляю в 2 других выкидываю, но скорость выполнения не меняется, вот если ещё и union на union all полменять то скорость увеличивается


DenK_vrtz   (2003-07-09 14:24:00) [13]

А Johnmen © как раз прав!!!
McSimm2 (09.07.03 14:21), млин, а где же ВАЖНЫЙ DISTINCT?
Замени ты union all на union!


McSimm2   (2003-07-09 14:21:00) [14]

Нет
Johnmen © (09.07.03 14:16)
ты не прав !!!

Запрос


SELECT COUNT (*)
FROM (SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)


отработал 150 милисекунд !!
Спасибо всем - из запроса выжато всё что можно !!!


Johnmen   (2003-07-09 14:16:00) [15]

>McSimm2 (09.07.03 14:08)

М-да... По-моему ты уже глумишься...:[


McSimm2   (2003-07-09 14:16:00) [16]

Млин, действительно - ща попробую !


DenK_vrtz   (2003-07-09 14:14:00) [17]

McSimm2 (09.07.03 14:08), так не надо во втором запросе DISTINCT писать, так как union выкинет повторяющиеся строки!


McSimm2   (2003-07-09 14:08:00) [18]


SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION ALL
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION ALL
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)


33 секунды


SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)



36 секунд


Johnmen   (2003-07-09 13:54:00) [19]

>McSimm2 (09.07.03 13:51)

Ты не понял...См. DenK_vrtz © (09.07.03 11:43), но так :
selct count(*) from
(
SELECT ulica, dom, kvart FROM table1
union
SELECT ulica, dom, kvart FROM table2)



McSimm2   (2003-07-09 13:54:00) [20]

Точнее "Групповая функция НЕявляется одногруппной" :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо