Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.036 c
15-1144955727
Yozh_Programmer
2006-04-13 23:15
2006.05.07
Проблема с телевизором Toshiba


2-1145451891
DimMih
2006-04-19 17:04
2006.05.07
TTable


15-1144736884
Карелин Артем
2006-04-11 10:28
2006.05.07
Пирамида и знак над ней на 1 USD. Из какой части света взято?


8-1134149328
Dark Lord
2005-12-09 20:28
2006.05.07
Гитарный тюнер на Дельфи


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