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

Вниз

СУБД с возможностью создания перекресных запросов.   Найти похожие ветки 

 
infom ©   (2006-07-25 16:29) [0]

Уважаемые мастера.
Посоветуйте пожалуйста СУБД в которой бы была доступна возможность построения перекресных запросов.

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


 
Desdechado ©   (2006-07-25 16:37) [1]

> возможность построения перекресных запросов
А теперь доступным языком, что под этим понимается.


 
Stanislav ©   (2006-07-25 16:55) [2]

Есть ACCESS.
А можно их строить и в EXCEL, А данные хранить в любой БД, которую можно подключить через ODBC.


 
PEAKTOP ©   (2006-07-25 16:58) [3]


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

На мой взгляд, это не основной фактор при выборе движка. Можно и на TTextDataSet из стандартных демок Борланда организовать cross-tab отчеты. Повозиться много придется, но можно.
Основные факторы, на мой взгляд, в этом вопросе, это
-- предполагаемый размер базы данных (т.е. есть предприятие, котрое продает 1 самолет в месяц, на него выписывается одна расходная накладная с одной позицией, а есть оптовая база продуктов питания, у которой за день до 800 накладных каждая листов по семь, а есть завод, котроый продает 1 станок в месяц, но конструкторская спецификация изделия занимает листов 150...)
-- предполагаемая требуемая производительность чтения-записи данных (в том случае, когда заказчик не хочет купить восьмиголовый сервак со скази штук за 40). Хотя, если ты пишешь билинговый софт для телефонной кампании, регистрирующий все звонки скажем во всей средней полосе России, то в некоторых случаях "железо" тебе не поможет и список подходящих движков очень сильно сужается.
-- предполагаемое количество одновременно работающих пользователей в локальной сети.
-- предполагаемое требование наличия Web-доступа к базе данных.
-- стоимость этого движка и дополнительных клиентских лицензий.

Подчеркиваю, это просто мое личное мнение.


 
infom ©   (2006-07-25 17:19) [4]

Отвечаю по пунктам:
1. Описание БД: две сущности Магазины (~800) и товары (~50), у сущности товар около 20 полей. Анализ будет осуществляться по Магазинам и по Товарам

Под перекресным запросом я понимаю:
Запрос который выводит след таблицу
_________Магазин 1 | Магазин 2 | Магазин 3 | ....
Товар 1__Знач 1.1    | Знач 2.1   | Знач 3.1 |
Товар 2__Знач 1.2    | Знач 2.2   | Знач 3.2 |
Товар 3__Знач 1.3    | Знач 2.3   | Знач 3.3 |

Знач х.х - одно из полей Сущности ТоварыПоМагазинам

2. Особых требований к производительности нет.
3. Одновременно работает < 5 пользователей
4. Веб доступа пока не надо
5. Стоимость желательно бесплатно или в пределах 100$. Гиганты типа MS SQL и Oracle однозначно неподойдут.

Конечно можно всю работу по пересечению реализовать на клиенте (т.е. с помощью кода в Delphi), но хочется чтобы это работу выполнял движок БД и по возможности быстро. Может есть решение ?


 
Виталий Панасенко   (2006-07-25 17:33) [5]

Так нужен кросс-таб отчет ? Т.е. количество магазинов и товаров зарание неизвестно. и если вниз нет проблем, то в сторону добавлять новые магазины проблема ?
pReport(бесплатный)/FastReport/FreeReport


 
PEAKTOP ©   (2006-07-25 17:35) [6]

Как формировать cross-tab мне подсказал Johnmen когда-то давно.
Лично я юзаю Firebird, в котором есть возможность писать хранимые процедуры.
В твоем примере моя ХП вернула ба два поля "Товар"=varchar(50) и "Магазины"= BLOB SUB_TYPE TEXT, в которое пихается кросс-таб в виде списка строк со значениями по каждому из магазинов (то есть, одна строка = один магазин, если по магазину ничего нет, все равно пихаем нулевое значение). А на клинте есть самописный компонент к QReport-у, который разбирает список строк из поля и "разворачивает" его во всю  свою длину.
А если тебе данные надо выкинуть в броузер при помощи того же PHP, то там еще проще - разметку можно делать прямо внутри процедуры тегами
MAGAZIN = "<tr>";
FOR select .... from ...table... where into :A_VALUE DO
 BEGIN
 IF(:A_VALUE IS NULL)THEN
   A_VALUE = "0.00";
 MAGAZIN = :MAGAZIN||"<td>"||:A_VALUE||"</td>";
 END
MAGAZIN = :MAGAZIN||"</tr>";
SUSPEND;


 
infom ©   (2006-07-25 17:48) [7]

Виталий Панасенко и PEAKTOP
Большое спасибо, отображение на клиенте сделать довольно просто, но вопрос мой несколько в другом.
Меня интересует проблема построения данной кросстаблицы только средствами самой СУБД. Т.е. каким образом в каждой СУБД можно получить выше описанную таблицу(просто SQL или StoredProc) и в какой субд это будет проще получить ?


 
Desdechado ©   (2006-07-25 17:54) [8]

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


 
saxon   (2006-07-25 18:01) [9]


> Desdechado ©   (25.07.06 17:54) [8]

Можно было бы (MSSQL) c помощью курсоров и временных таблиц, но автору это не прокатывает.
А Firebird, не знаю, есть ли там что то похожее ...


 
infom ©   (2006-07-25 18:05) [10]


> наборы данных с заранее неопределенным числом полей SQL
> не поддерживает.

А как насчет оператора PIVOT ?


 
PEAKTOP ©   (2006-07-25 18:09) [11]

В ИнтерБазе последнем че-то было про XML-объекты на уровне SQL. Т.е. динамически формировать столбцы он конечно не позволяет, но можно на XML извратиться и опять-таки: разбирать на клиенте. Но в чем там дело - не знаю, знакомый хвастался, я, слава Богу, давно соскочил на Firebird, как только они выпустили stable-релиз и не жалуюсь.


 
Desdechado ©   (2006-07-25 18:14) [12]

> c помощью курсоров и временных таблиц
Это не SQL, это извращение :о)

> А как насчет оператора PIVOT ?
И где такое?


 
infom ©   (2006-07-25 18:15) [13]

Вот нашел небольшой мануал для MS Access http://matveev.kiev.ua/macceass/ch2/gl11/007.htm . Как создавать cross-tab с помощью операторов TRANSFORM и PIVOT. Буду разбираться.



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

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

Наверх




Память: 0.48 MB
Время: 0.045 c
8-1141387986
Shtorm
2006-03-03 15:13
2006.09.24
Проблема в MediaPlayer


11-1130323876
Reset
2005-10-26 14:51
2006.09.24
"Закрыть" MAINICON


15-1156092579
Юрий Зотов
2006-08-20 20:49
2006.09.24
И снова о демократии на "Мастаках" о:)


2-1157266289
Mozgan
2006-09-03 10:51
2006.09.24
Числа


3-1153473158
dj0n
2006-07-21 13:12
2006.09.24
Подскажите пожалуйста про InterBase





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский