Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

Как получить все комбинации в запросе?   Найти похожие ветки 

 
sanich ©   (2006-03-14 10:12) [0]

Всем привет. Есть таблица с полями Х1, Х2, Х3. Как получить из нее представление, в котором будут представлены все комбинации значений полей Х1 и Х2.
Я пробовал вариант
select t.X1, t. X2
from table t, table tt
Но это не выход - уже при 100 записях в результате получаем 10000 записей в представлении? Как быть? Может кто знает выход?


 
Sergey13 ©   (2006-03-14 10:13) [1]

select distinct t.X1, t. X2
from table t


 
Sergey13 ©   (2006-03-14 10:16) [2]

Или (с количеством записей в данной комбинации)
select t.X1, t. X2, count(*)
from table t
Group By t.X1, t. X2


 
Reindeer Moss Eater ©   (2006-03-14 10:16) [3]

select t1.x1, t2.x2
from tablename t1, tablename t2
where t1.x1 > t2.x2


 
sanich ©   (2006-03-14 10:48) [4]


> Sergey13

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


> Reindeer Moss Eater

Поля Х1 и Х2 не одинакового типа. Х1- dataTime, X2 - numeric (4,0)


 
Sergey13 ©   (2006-03-14 10:55) [5]

2[4] sanich ©   (14.03.06 10:48)
> Ты не понял,
Как спросил так и понял.

> надо получить даже те комбинации, которые не встречаются в таблице.
Это как?


 
sanich ©   (2006-03-14 11:02) [6]

Ну например.
X1      X2
01.01  1
12.12  3

Мне надо получить в представлении

X1      X2
01.01   1
01.01   3
12.12   1
12.12   3


 
Reindeer Moss Eater ©   (2006-03-14 11:02) [7]

Поля Х1 и Х2 не одинакового типа. Х1- dataTime, X2 - numeric (4,0)

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


 
Reindeer Moss Eater ©   (2006-03-14 11:03) [8]

>Мне надо получить в представлении

select t1.x1, t2.x2
from tablename t1, tablename t2


 
ЮЮ ©   (2006-03-14 11:07) [9]

select DISTINCT t.X1, tt. X2
from table t, table tt

Но это не выход - уже при 100 записях в результате получаем 10000 записей в представлении?

Выполни, если сервер позволяет,
select Count(DISTINCT X1)
from table t
или подсчитай сколько возвращает запись запрос
select DISTINCT X1
from table t
и умножь на аналгичное:
select Count(DISTINCT X2)
from table t
Именно столько представление и должно вернуть.
Тебя не поймешь, то тебе мало и хочется даже того, чего нет в таблрице, то слишком много


 
sanich ©   (2006-03-14 11:16) [10]


> Тебя не поймешь, то тебе мало и хочется даже того, чего
> нет в таблрице, то слишком много

Да, и вправду, я  наверное не умею обяснить.
Значения полей X1 и Х2 часто повторяются. Например сейчас у меня есть 297 записей, а запрос
select distinct t.X1, t. X2
from table t, table tt
Возвращает 441 записей. Но выполняется ОЧЕНЬ долго :(


 
Плохиш ©   (2006-03-14 11:21) [11]


> sanich ©   (14.03.06 11:16) [10]
> а запрос
> select distinct t.X1, t. X2
> from table t, table tt
> Возвращает 441 записей. Но выполняется ОЧЕНЬ долго :(

Поставить новый процессор на сервер, довести количество процессоров и памяти до бесконечности, поставить супер быстрый накопитель. Ты что думаешь, что сервер твой запрос не обрабатывает?


 
Anatoly Podgoretsky ©   (2006-03-14 12:17) [12]

sanich ©   (14.03.06 10:12)  
А что же ты хотел еще, 100*100 = 10 000


 
Desdechado ©   (2006-03-14 12:29) [13]

если речь пошла о комбинациях, то это комбинаторика
а в ней, как известно, мало не бывает


 
sanich ©   (2006-03-14 12:53) [14]

Это все очень печально. А мне надо получить все возможные комбинации, сократив при этом общее время выполнения запроса.


 
Anatoly Podgoretsky ©   (2006-03-14 12:56) [15]

А CROSS JOIN есть в FireBird?


 
Sergey13 ©   (2006-03-14 12:58) [16]

2[14] sanich ©   (14.03.06 12:53)
>А мне надо получить все возможные комбинации
Иногда (но довольно часто) просто кажется, что надо. Если объяснишь конечную цель сего действа, может и переубедим. 8-)


 
sanich ©   (2006-03-14 13:02) [17]

Для чего? Надо эту байду всю вывести в FastReport в Cross - отчет. Есть еще одно поле S - сума. Вот и получается, что необходимо построчно выводить суму по датам а по столбцам суму по коду. Вот и надо мне, чтобы по каждой комбинации число-код была сума. Где ее нету - выйдет просто 0.


 
Sergey13 ©   (2006-03-14 13:10) [18]

217] sanich ©   (14.03.06 13:02)
>Надо эту байду всю вывести в FastReport
Сам я этого не делал, но в FastReport есть возможность построения крос-отчета, и насколько я помню из документации, это не требует построения крос-датасета.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1144844444
tria
2006-04-12 16:20
2006.05.07
Мультиязычность приложения


8-1134409438
VasRoG
2005-12-12 20:43
2006.05.07
Загрузка bmp


15-1144767485
Seldon
2006-04-11 18:58
2006.05.07
рендер HTML


11-1125762294
Wiz@rd
2005-09-03 19:44
2006.05.07
Transparent


1-1143872827
Sam Stone
2006-04-01 10:27
2006.05.07
Поиск пути





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский