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

Вниз

SQL: Декартово произведение с произвольным множеством   Найти похожие ветки 

 
Kostafey ©   (2009-10-17 00:11) [40]

> [38] SELECT ©   (16.10.09 23:58)
> не ну ты будь готов к потоку уточняющих вопросов )

Это всегда пожалуйста, конечно. :)


 
SELECT ©   (2009-10-17 00:12) [41]

всё просто:
строишь декартово произведение всех показателей и подразделений (надеюсь, что они в справочниках),
потом это джойнишь слева собственно таблицей, где "Каждая запись представляет из себя:"


 
Kostafey ©   (2009-10-17 00:22) [42]

> строишь декартово произведение всех показателей и подразделений
> (надеюсь, что они в справочниках),

Убедитесь, что вы сидете устойчиво: сейчас
велика вероятность упасть со смеху.

Список подразделений - да справочник.
Справочиника показателей не существует.
Более того, сама суть этих признаков, на
основе которых формируются показатели
зашиты в разные поля разных типов той же
самой таблицы из которой вычленяется
значение показателя для i-го типа.

Да, верно, БД даже не в 1-й нормальной форме.
Струкура БД снизошла на грешную землю с
Небес, там десятки тысяч записей и менять
ее никто не собирается.


 
SELECT ©   (2009-10-17 00:26) [43]


> Kostafey ©   (17.10.09 00:22) [42]

тогда попробуй вычленить запросом показатели - это и будет виртуальный справочник.

ЗЫ

> Более того, сама суть этих признаков, наоснове которых формируются
> показатели зашиты в разные поля разных типов той же самой
> таблицы из которой вычленяется значение показателя для i-
> го типа.


это называется абзац. т.е. приплыли )))


 
SELECT ©   (2009-10-17 00:29) [44]

"бардак систематизации не поддается" (с)


 
Kostafey ©   (2009-10-17 00:30) [45]

> тогда попробуй вычленить запросом показатели - это и будет
> виртуальный справочник.

А смысл? Его все равно нужно будет делать
left join, при том что для каждой записи
подразделения должно быть декартово произведение
с множеством показателей.
Можно с таким же успехом просто перечислить
их 1,2,3... как и было сделано выше.


 
Kostafey ©   (2009-10-17 00:31) [46]

> "бардак систематизации не поддается" (с)

Мне уже не первый раз приходится это читать
на дельфимастере в здрес тех задач, с которыми
приходится иметь дело. :))


 
SELECT ©   (2009-10-17 00:40) [47]


> Kostafey ©   (17.10.09 00:30) [45]
> А смысл? Его все равно нужно будет
> делать left join, при том что для каждой записи подразделения
> должно быть декартово произведение с множеством показателей.

не left, а декартово.
а вообще я что-то перестал понимать - то надо, то не надо...
вот же схема:
SELECT * FROM <подразделения>, <показатели>
LEFT JOIN <таблица, где "Каждая запись представляет из себя:">

непонятно, в чем успех "просто перечислить"? кого перечислить? откуда узнали, сколько перечислить?


 
Kostafey ©   (2009-10-17 00:53) [48]

> не left, а декартово.
> а вообще я что-то перестал понимать - то надо, то не надо...
> вот же схема:
> SELECT * FROM <подразделения>, <показатели>
> LEFT JOIN <таблица, где "Каждая запись представляет из себя:">

Надо, всегда надо :) Я просто то же самое в другом виде написал:

SELECT * FROM <подразделения>
LEFT JOIN <показатели>
LEFT JOIN <таблица>, где "Каждая запись представляет из себя:


где LEFT JOIN <показатели>:
left join (SELECT 1 AS ID_TYPE_INDEX UNION SELECT 2 UNION SELECT 3
          UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) typeIndex on 1=1



> непонятно, в чем успех "просто перечислить"?

Я ж говорю справичника показателей нет, а их полный
перечень в любом случае должен присутствовать.

> кого перечислить?

Все показатели.

> откуда узнали, сколько перечислить?

Их перечень задан.


 
SELECT ©   (2009-10-17 01:00) [49]

последние вопросы - зачем LEFT JOIN <показатели>?
и кем, когда и в какой форме "Их перечень задан"?


 
Kostafey ©   (2009-10-17 01:02) [50]

> и кем, когда и в какой форме "Их перечень задан"?

ТЗ, вестимо ;)
Я уже писал:
> -номер показателя (их 6, вот их


 
sniknik ©   (2009-10-17 12:42) [51]

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


 
Kostafey ©   (2009-10-17 14:16) [52]

> [51] sniknik ©   (17.10.09 12:42)

В смысле использования временных таблиц?


 
sniknik ©   (2009-10-17 14:52) [53]

в смысле запроса который я исправил, и объяснил почему...
Григорьев Антон ©   (16.10.09 19:43) [15]
а вот почему ты это объяснение пытаешься применить к чему угодно но только не этому, загадка...


 
Kostafey ©   (2009-10-17 15:12) [54]

> [53] sniknik ©   (17.10.09 14:52)

Уф, ура, наконец-то понял. А то уж боялся так и останусь неучем :))
Спасибо!

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

Схематично:
select
 t.Field1,
 s.arbitrarySet,
 q.value
from Table1 AS t, (SELECT 1 AS arbitrarySet UNION SELECT 2 UNION SELECT 3) AS s
left join (
   select
       CASE someVariable
           WHEN 1 THEN "a"
           WHEN 2 THEN "b"
           WHEN 3 THEN "c"
           ELSE "d"
       END as value
) q on q.someVariable = s.arbitrarySet


Это, конечно не работает...
Конечно, на месте "a", "b", "c" будут свои запросы.


 
Kostafey ©   (2009-10-17 16:25) [55]

> [54] Kostafey ©   (17.10.09 15:12)

Сам про себя: а нафига я тут вообще left join приплел? :)


 
SP   (2009-10-17 16:35) [56]


> Необходимо сформулировать запрос, чтобы получить декартово
> прооизведение
> с произволным множеством, например 1,2,3, т.е.


Создай таблицу с этим самым произвольным множеством.
А потом
select Table1.Field1, Table2. from Table1.arbitrarySet from Table1,Table2

Тем более что это самое "Произвольное" множество - как я понимаю не совсем произвольное и чем-то должно определяться... Вот и в данном случае будет определяться содержимым Table2
Да и не мешало бы знать цели такой задачи, тогда возможно бы и другое более подходящее решение нашлось бы...


 
Kostafey ©   (2009-10-17 17:05) [57]

> from Table1.arbitrarySet from Table1,Table2

Это что значит?


> Да и не мешало бы знать цели такой задачи, тогда возможно
> бы и другое более подходящее решение нашлось бы...

см. > [39] Kostafey ©   (17.10.09 00:08)


 
SP   (2009-10-17 17:19) [58]

Ой, блин... Это издержки копипаста...
Имелось ввиду:

select Table1.Field1, Table2.arbitrarySet from Table1,Table2



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

Текущий архив: 2009.12.13;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.015 c
2-1256278721
Drowsy
2009-10-23 10:18
2009.12.13
Multiple rows in singleton select.


2-1256204193
Scot Storch
2009-10-22 13:36
2009.12.13
Как передать в запрос многострочный текст


15-1255206608
Юрий
2009-10-11 00:30
2009.12.13
С днем рождения ! 11 октября 2009 воскресенье


15-1255699290
ocean
2009-10-16 17:21
2009.12.13
Посоветуйте бесплатный antispy для windows 2003 server?


2-1256283306
grav
2009-10-23 11:35
2009.12.13
Выгрузка сообщений об ошибках в текстовый файл