Yuriy_R |
Отправлено: 04.11.2004, 18:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
В силу различных, не всегда от нас зависящих причин, "юзать в полный рост" Oracle не получается. Да и от offline в ближайшее время избавиться не удастся. Посему будем дальше думать. Спасибо всем за советы.
|
|
** vadoo |
Отправлено: 09.11.2004, 21:39 |
|
Не зарегистрирован
|
Это вечная тема. Однако самая лучшая СУБД это та которую ты знаешь. Если ты работаешь на VFP то не парь мозги и работай на ней дальше. В ней есть всё что нужно и хорошо отработано. И с локалкой и интернетом-интранетом умеет работать. А если знаешь английский походи по штатовским сайтам про FoxPro и мож тан накачать компонентов для украшательств как для Билдера. И на VFP мож писать не только проги под БД, я наклепал редактор типа навороченного блокнота и пару приколов.
Классные сервера и клиентские девелоперы всех уровней есть у Sybase — в штатах очч популярная фирма правда наши её проги почемуто не хотят ломать. :-))
Классная вещь PowerBuilder, правда с огромным недостатком — у нас на него почти нет литературы, но кто хоть чуток на нём работал — просто влюбляется в него по уши.
Удачи. |
|
Yuriy_R |
Отправлено: 11.11.2004, 15:08 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
2 vadoo
Спору нет. VFP — чудесная СУБД для своего класса задач, что бы там ее недруги не говорили. CBuilder заинтересовал меня прежде всего как универсальный инструмент для построения приложения практически любого класса, в т.ч. и баз данных. На VFP я бы уже давно все сделал и забыл, но это же не значит, что больше ничего не надо изучать ?
|
|
Ответ на критику Access |
Отправлено: 18.11.2004, 16:48 |
|
Не зарегистрирован
|
QUOTE (pagan @ 13/10/2004, 10:53) | Во первых уважаемый разберитесь что такое СУБД (система управления баз данных) и фаловая БД, и чем они друг от друга отличаются. После чего исключите Access (который даже файловой БД можно назвать с трудом) из своего списка
Если же отвечать на вопрос — то я бы порекоммендовал Oracle — все-таки это бесспорный мировой лидер в секторе СУБД. Правда нужно быть специалистом в этой области, чтобы с ней работать (ну или по крайней мере прочесть 2-3 книги Oracle по настройке и работе). Ну а если надо че по проще, то вам уже подсказали. |
Уважаемый! вы просто далеко не знаете Access. Я делал в нем такие вещи, что вам даже и не снились. |
|
AVC |
Отправлено: 18.11.2004, 17:33 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Уважаемый "Ответ на критику Access" если уж вы вступаете в дискуссию, то могли бы и представиться.
Во вторых Access и по моему мнению то же действительно слабая и глючная система. От общения с ней остался самый неприятный осадок.
Отредактировано AVC — 19/11/2004, 17:23 |
|
Gedeon |
Отправлено: 18.11.2004, 17:43 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (Ответ на критику Access @ 18/11/2004, 17:50) | Я делал в нем такие вещи, что вам даже и не снились. |
Ну-ну поставьте мне задачку, к-рая мне не снилась, сделанную на Access и к-рую я не смог бы ее решить на других БД если не более изящно, то по крайней мере не хуже .
Отредактировано Gedeon — 18/11/2004, 19:05
|
|
Nick |
Отправлено: 18.11.2004, 17:56 |
|
Машинист паровоза
Группа: Участник
Сообщений: 247
|
То же
остался неприятный осадок от работы с Access.
Снится в кошмарных снах
|
|
Gedeon |
Отправлено: 18.11.2004, 19:12 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (AVC @ 18/11/2004, 18:35) | Есть таблица с двумя атрибутами: номер группы и номер аудитории.
Нужно сделать выборку таким образом, чтобы в результате получилась таблица: группа и наиболее частая для нее аудитория.
|
Вложенные запросы допускаются?
|
|
olegenty |
Отправлено: 19.11.2004, 08:01 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ответ на этот вопрос и с подзапросами и без давно имеет место на xportal. т.е. для MSSQL, Oracle и IB/FB/Yaffil
|
|
AVC |
Отправлено: 19.11.2004, 08:55 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Давно — это всего неделя.
Подзапросы допускаются. Главное, что бы все было в одном Selecte и,естественно, без дополнительных таблиц. Мой вариант для Oracle можно посметреть там, куда отправляет olegenty (здесь) (решив для Oracle поленился искать решение для обычного SQL). Но а вдруг получится .
PS. Это была первая задачка, пришедшая в голову и достаточно сложная. |
|
olegenty |
Отправлено: 19.11.2004, 12:09 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
относительно сложности поспорю.
|
|
Guest |
Отправлено: 19.11.2004, 12:21 |
|
Не зарегистрирован
|
2olegenty
В постановке "что бы все было в одном Selecte и, естественно, без дополнительных таблиц"
Не забыл?
|
|
AVC |
Отправлено: 19.11.2004, 12:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Ну, вобщем, понятно предыдущий пост мой .
Эк тема то оживилась из-за одного неразумного юсера. |
|
Gedeon |
Отправлено: 19.11.2004, 14:06 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Вот что я родил вчера, на скорую руку, вроде работает на той табличке к-рую сотворил я для теста, ну и вроде как должно на всех БД работать.
SQL | SELECT Grupa, aud
FROM( SELECT
Grupa, aud, COUNT(Aud) ca
FROM GrAu GROUP BY Grupa, aud
) t1
WHERE ca=( SELECT MAX(ca)
FROM( SELECT
Grupa, aud, COUNT(Aud) ca
FROM GrAu GROUP BY Grupa, aud
) t2
WHERE t1.grupa=t2.grupa
)
ORDER BY 1 |
Еще бы по хорошему решить вопрос, что выбирать если у группы 2 ||> равных максимальных аудитории.
P.S. По поводу OVER (analytic_clause) поддержка с 8,1,6EE что не есть хорошо, для себя юзать можно, а так вопрос переносимости очень не радует.
Отредактировано Gedeon — 19/11/2004, 15:15
|
|
AVC |
Отправлено: 19.11.2004, 15:07 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
2Gedeon
Явно не оговаривалось но подрозумевалось, что запрос будет возвращать ровно по одной строке для каждой группы (любой с максимальным значением). Это и есть тонкое место.
QUOTE |
P.S. По поводу OVER (analytic_clause) поддержка с 8,1,6 что не есть хорошо, для себя юзать можно, а так вопрос переносимости очень не радует.
|
Как показывает мой, и не только мой, опыт: в крупном приложении о вопросе переносимости можно забыть. По крайней мере текст запроса это далеко не единственное что нужно менять . Я считаю, что если уж используешь какой либо сервер то стоит его "использовать на всю катушку". (Ведь глупо иметь Oracle а использовать его как Access)
Отредактировано AVC — 19/11/2004, 15:16 |
|
Gedeon |
Отправлено: 19.11.2004, 16:04 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (AVC @ 19/11/2004, 16:09) | Как показывает мой, и не только мой, опыт: в крупном приложении о вопросе переносимости можно забыть. По крайней мере текст запроса это далеко не единственное что нужно менять . Я считаю, что если уж используешь какой либо сервер то стоит его "использовать на всю катушку". (Ведь глупо иметь Oracle а использовать его как Access) |
Так а с этим никто и не спорит.
|
|
Gedeon |
Отправлено: 19.11.2004, 16:54 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (AVC @ 19/11/2004, 16:09) | 2Gedeon
Явно не оговаривалось но подрозумевалось, что запрос будет возвращать ровно по одной строке для каждой группы (любой с максимальным значением). Это и есть тонкое место. |
Элементарно:
SQL | SELECT Grupa, Max(aud)
FROM( SELECT Grupa, aud
FROM( SELECT
Grupa, aud, COUNT(Aud) ca
FROM GrAu GROUP BY Grupa, aud
) t1
WHERE ca=( SELECT DISTINCT MAX(ca)
FROM( SELECT
Grupa, aud, COUNT(Aud) ca
FROM GrAu GROUP BY Grupa, aud
) t2
WHERE t1.grupa=t2.grupa
)
) t2
|
Кстати по поводу аксеса там есть еще FIRST() && LAST()
|
|
AVC |
Отправлено: 19.11.2004, 17:19 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Прекрасно. Все работает как надо.
Подвела привычка использовать агрегатные функции
Соглашаюсь с olegenty по поводу сложности и снимаю из теста. |
|
Gedeon |
Отправлено: 19.11.2004, 17:57 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (AVC @ 19/11/2004, 18:21) | Соглашаюсь с olegenty по поводу сложности и снимаю из теста. |
Ну на первый взгляд мне тоже показалось просто, однако, посидеть подумать пришлось, с другой стороны такие задачки хорошо развивают.
P.S. В запросе DISTINCT лишний, забыл убрать при экспериментах.
|
|
Guest |
Отправлено: 19.11.2004, 18:50 |
|
Не зарегистрирован
|
Да. Distinct я нашел. Решение красивое, когда я его вижу — очевидное . Жалею, что сам не додумался.
По поводу сложности: в свое время неоднократно нарывался на проблему "where max" — нужно найти id первой встречной и ровно одной записи из группы по неким условиям отбора и упорядочивания и связать ее дальше. Без агрегатных функций эта проблема решается очень непросто и очень не быстро (по времени выполнения).
Когда искал решения для xPortal то же получил удовольствие. |
|
olegenty |
Отправлено: 23.11.2004, 11:06 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
я не виноват, что IB/FB/Yaffil пока не поддерживают подзапросов. однако, дополнительных таблиц я не использовал, использовал вьюхи. ну, впредь могу тесты делать на MSSQL, всё равно начал с ним плотно работать по текущему заданию на работе.
и оффтопик — MSSQL поддерживает индексируемые вьюхи. иногда грех не воспользоваться.
|
|
pagan |
Отправлено: 24.11.2004, 09:21 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
QUOTE | Уважаемый! вы просто далеко не знаете Access. Я делал в нем такие вещи, что вам даже и не снились. |
Извините, что давно не заходил, но раз уж критика прозвучала в мой адрес, то попробую ответить за свои слова, хотя коллеги это в общем-то уже сделали. Для начала можно было бы представиться, а то я не очень люблю разговаривать со стенкой. По-поводу первого пункта: Уважаемый, в свое время я пропахал Акцес вдоль и поперек, получив немоло шишек из-за ущербности данной системы, потому ваши сомнения насчет моих знаний будем считать несостоявшимися. Надеюсь спорить о том, что Акцес не является СУБД даже от части, не будем? Ну а по-поводу второго пункта вашего высказывания: Я знаете ли тоже делал в Акцес "такие вещи", правда утверждать что они вам не снились не буду. Но после перехода на настоящую СУБД, в данном случае Oracle, говорить о тех вещах вслух глупо — засмеют.
P.S. да, кстати чуть не забыл — Удачи Вам в вашем становлении программистом, мистер Unregistered! |
|