Обо мне

Моя фотография
Индивид, которому нравится слушать качественную музыку, а потом делиться впечатлениями с другими!
Показаны сообщения с ярлыком oracle. Показать все сообщения
Показаны сообщения с ярлыком oracle. Показать все сообщения

пятница, 29 июля 2011 г.

[Delphi, Oracle] Создание информационного табло

Хотел бы разместить здесь небольшую свою заметку о том, как создавал в свое время систему информационных табло для предыдущего места работы. Оригинал статьи на Хабре

В суде я работаю работал секретарем судебного заседания – помощником судьи, но иногда меня привлекают для участия в более сложных и важных мероприятиях, таких как, например, создание очередного программного обеспечения для внутреннего пользования (замечу сразу - никаким техническим образованием не обладаю).

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


вторник, 27 апреля 2010 г.

SQL \ Oracle "Множественность"

Хотел бы открыть небольшую серию постов с небольшими решениями на SQL, которые я использовал для написания программы "Электронное табло".
Многим, возможно, это будет неинтересно, но пусть будет!

Представим ситуацию: у вас есть несколько таблиц, в которых хранится разного рода информация, например, о делах, о сторонах о сущности спора. Теперь необходимо отобразить определенные поля. И все бы ничего, но случаются такие ситуации, когда в одном деле участвует несколько истцов и ответчиков.
Про себя я назвал данную ситуацию "множественность истцов, ответчиков".

Запросом вывести сразу всю информацию достачно просто и с этой задачей справится даже школьник. Однако пока не появляется наша множественность.

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

CREATE VIEW PLAINTIFF AS
select suit_id, max(LTRIM(sys_connect_by_path(name,'; '),'; ')) app
from (SELECT naznach.suit_id, app_resps.name, row_number() over (partition by naznach.suit_id order by app_resps.name) rn
from Naznach INNER JOIN App_resps ON naznach.suit_id = app_resps.suit_id
WHERE ((app_resps.TYPE=1) Or (app_resps.TYPE=4) Or (app_resps.TYPE=10) Or (app_resps.TYPE=14) Or (app_resps.TYPE=13)))
start with rn = 1
connect by prior rn = rn-1
and prior suit_id = suit_id
group by suit_id
order by suit_id

И уже дальше из своего запроса основного я связываюсь с этой виртуальной таблицый и получаю информацию.