![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 14.05.2007
Сообщений: 8
|
![]()
Брацы и сестры!...есть небольшая БД на SQL ....для этой штуки нужны тригеры и курсоры....кто нибудь если в этом во всем разбереться БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!! =)
Create Table sklad( sklad_num NUMERIC(6) PRIMARY KEY , sklad_name VARCHAR(100) ); Create Table firm( firm_svid NUMERIC(6)PRIMARY KEY , firm_name VARCHAR (100) ); Create Table zakazwik( zakazwik_svid NUMERIC(6)PRIMARY KEY , zakazwik_name VARCHAR (100) ); Create Table dogovor( dogovor_num NUMERIC(6)PRIMARY KEY , dogovor_date DATETIME DEFAULT GETDATE(), sklad_num NUMERIC (6) REFERENCES sklad (sklad_num), firm_svid NUMERIC (6) references firm (firm_svid), ); Create Table tovar ( tovar_name VARCHAR(100)PRIMARY KEY, tovar_num NUMERIC(6) , tovar_price NUMERIC(9,2) , sklad_num NUMERIC(6) , constraint ft_tovar_sklad_num foreign key (sklad_num) references sklad (sklad_num), ); Create Table zakaz( zakaz_num NUMERIC (6)IDENTITY PRIMARY KEY , zakaz_date Datetime Default Getdate(), zakaz_price numeric (6,2), zakaz_pr numeric (6,2) , firm_svid NUMERIC(6) references firm (firm_svid), zakazwik_svid NUMERIC (6) REFERENCES zakazwik (zakazwik_svid), tovar_name varchar(100) constraint ft_zakaz_tovar_name foreign key (tovar_name) references tovar (tovar_name), ); alter table zakaz add z_sum numeric (6) insert firm(firm_svid,firm_name) values(111,'нпо'); Insert sklad (sklad_num,sklad_name) Values(100,'лЕПЙСПХИ'); insert sklad(sklad_num,sklad_name) values(101,'юМЦЮПoff'); insert zakazwik(zakazwik_svid,zakazwik_nam e) values(111,'Tovaroff'); insert zakazwik(zakazwik_svid,zakazwik_nam e) values(122,'щДЕКЭБЕИЯЯ'); insert tovar(tovar_num,tovar_name,tovar_pr ice,sklad_num) values(1,'аПСЯ_',500.00,101); insert tovar(tovar_num,tovar_name,tovar_pr ice,sklad_num) values(2,'пЕКЭЯЮ_',900.00,101); insert tovar(tovar_num,tovar_name,tovar_pr ice,sklad_num) values(3,'ьОЮКШ_',700.00,101); insert tovar(tovar_num,tovar_name,tovar_pr ice,sklad_num) values(1,'аЮМЮМШ_',550.00,100); insert tovar(tovar_num,tovar_name,tovar_pr ice,sklad_num) values(2,'юОЕКЭЯХМШ_',850.00,100); insert tovar(tovar_num,tovar_name,tovar_pr ice,sklad_num) values(2,'юМЮМЮЯШ_',1050.00,100); insert zakaz(tovar_name,zakazwik_svid,zaka z_pr,firm_svid) values('аПСЯ_',122,0.1,111); insert zakaz(tovar_name,zakazwik_svid,zaka z_pr,firm_svid) values('пЕКЭЯЮ_',122,0.1,111); insert zakaz(tovar_name,zakazwik_svid,zaka z_pr,firm_svid) values('юМЮМЮЯШ_',122,0.1,111); insert zakaz ( tovar_name, zakazwik_svid,zakaz_pr,firm_svid) values('аЮМЮМШ_',111,0.2,111); select firm_name, firm_svid from firm; select zakazwik_name,zakazwik_svid from zakazwik; select sklad_num, sklad_name from sklad where sklad_num<=sklad_num+1; select tovar_name, tovar_price, sklad_num from tovar; create View z_blank as select zakaz_num,zakazwik_name,firm_name,z akaz_date,t.tovar_name, t.tovar_price+t.tovar_price*z.zakaz _pr AS "symm" from zakaz z ,zakazwik a,firm f, tovar t where z.zakazwik_svid=a.zakazwik_svid and z.tovar_name=t.tovar_name GO select * from z_blank ; select zakaz_num, zakazwik_name, tovar_name from z_blank where zakazwik_name='щДЕКЭБЕИЯЯ'; select zakaz_num from z_blank where zakaz_num in (select zakaz_num from zakaz where zakaz_date between '10/10/2006' and '11/12/2006'); select zakaz_num, sum("symm") as zakaz_sum from z_blank where tovar_name='аЮМЮМШ_' group by zakaz_num; ------------------------------ create View sklad_w as select s.sklad_num,s.sklad_name,t.tovar_na me,t.tovar_price AS "жЕМЮ" from tovar t,sklad s where t.sklad_num=s.sklad_num GO create View s_blank as select zakaz_num,s.sklad_num,s.sklad_name, firm_name,zakaz_date,t.tovar_name, t.tovar_price+t.tovar_price*z.zakaz _pr AS "жЕМЮ" from zakaz z ,zakazwik a,firm f, tovar t,sklad s where z.zakazwik_svid=a.zakazwik_svid and z.tovar_name=t.tovar_name GO create proc QAAAAAAA @zakaz_num numeric(3)-- varchar(100) as select z.zakaz_num, s.tovar_name from zakaz z join tovar s on z.tovar_name=s.tovar_name where zakaz_num=@zakaz_num GO create proc schet @schet_ varchar (9) as select zakaz_num from z_blank z where z.tovar_name=@schet_ ....... помогите !!! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
Ну, разобраться несложно. Итак...
Имеется 6 таблиц: firm, sklad, zakazchik, tovar, dogovor, zakaz. Первые три являются основными таблицами для работы, три последние работают с ними по ключевым полям. Таблица "Товар" ссылается на склад (в котором, как я понимаю и находится сам товар), таблица "Договор" ссылается на склад и фирму (между которыми, как подозреваю и заключается договор) и таблица "Заказ", которая ссылается на фирму, заказчика и на заказываемый товар. Это что касается всех Create Table. Дальше происходит заполнение всех таблиц, кроме таблицы "Договор" (insert ....). Дальше идет выборка из таблиц(select ....). После этого создается View (вьюшка) z_blank (бланк заказа), которая представляет собой отдельный запрос, хранящийся в базе. Вьюшка соединяет таблицы "Заказ", "Заказчик", "Фирма", "Товар" и выбирает из них соответствующие поля. И еще кстати, запрос в данной вьюшке некорректен create View z_blank as select zakaz_num,zakazwik_name,firm_name,zakaz_date,t.tov ar_name, t.tovar_price+t.tovar_price*z.zakaz _pr AS "symm" from zakaz z ,zakazwik a,firm f, tovar t where z.zakazwik_svid=a.zakazwik_svid and z.tovar_name=t.tovar_name --надо добавить and z.firm_swid = f.firm_swid Надо так. Поехали дальше. Дальше по аналогии создаются еще две вьюшки (причем во второй такая же ошибка, что и в первой, одна таблица остается неподсоединенной). После этого создаются две хранимые процедуры (не совсем понятно, для чего они нужны, поскольку они фактически остаются "вещью в себе". Извне им передается параметр (в первом случае значение ключевого поля таблицы "Заказ" по которой и делается запрос, во втором случае наименование товара) и дальше по этому параметру делается запрос, который, по идее надо передать в виде курсора наружу и дальше уже работать с этим курсором, но этого нет. Пожалуй, это все, что касается того, что было написано. Теперь по поводу триггеров и курсоров... Я работаю на Оракле, там другой синтаксис, не знаю, может в твоем случае потребуется написать как-то по другому: create proc MyProg @id numeric(3), out l_list varchar as CURSOR cur is select f1, f2 from table1 where f3_id = @id; begin l_list := ''; for v in cur loop l_list := l_list||v.f1||'; '||v.f2||', '; end loop l_list := substr(l_list, 1, Length(l_list) - 2; end; Такая процедура (откровенная импровизация) должна вернуть в качестве выходного параметра значения полей через запятую. Триггер... Для твоего случая триггер... ну пусть такой, который будет заполнять таблицу "Товар" при вставке новой записи в таблицу "Склад" create or replace trigger sklad_on_insert before insert on sklad REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW begin insert dogovor(price, sklad_swid) values(300, :new.sklad_swid); end; Код проверить не могу, поэтому это все, что здесь можно написать.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 14.05.2007
Сообщений: 8
|
![]()
спасиб!!! =) А есть людя которые реально на SQL шарят??? или есть готовые БДышки которые не жалко дать бедному очень бедному студенту........ =)
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
Ну подставляй карман. БД на 300 таблиц, порядка 2000 хранимых процедур, функций, триггеров. Сумеешь разобраться?
![]() Что непонятно, спрашивай, смогу - отвечу.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 14.05.2007
Сообщений: 8
|
![]()
я ж не админ БД мне курсовик надо писать где будет в приложении "моя"
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
РАЗДАЧА: антиотладка/недокументированные всякие штуки и разный глючный код :) | JTG | Безопасность, Шифрование | 0 | 14.07.2008 16:15 |
тригеры | sergei64_89 | SQL, базы данных | 1 | 06.05.2008 13:14 |
Курсоры | Rusl92 | Общие вопросы Delphi | 1 | 14.04.2008 10:12 |
курсоры | Лубышев | Помощь студентам | 4 | 22.01.2008 18:36 |
Иконы и курсоры | 4e_ | Общие вопросы Delphi | 1 | 19.05.2007 14:04 |