Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako ponoviti update?

[es] :: MS SQL :: Kako ponoviti update?

[ Pregleda: 2121 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Lazarevic Nebojsa
Beograd

Član broj: 134014
Poruke: 10
*.dynamic.isp.telekom.rs.



+1 Profil

icon Kako ponoviti update?17.01.2012. u 21:52 - pre 149 meseci
Imam dve tabele (Kandidat i Prosek). Svaki Kandidat ima 4 sloga u tabeli prosek za odredjenog kandidata (tj. sa svaku godinu iz srednje skole jedan slog). Prosek ima kompozitni kljuc koji cine kljucevi tabele Kandidat i ID iz tabele Prosek koji ce nam odrediti za koju godinu je prosek. E sad kad treba u Kandidatu da izracunam koliko ukupno kandidat ima bodova iz srednje imam problem u trigeru. Ovaj triger za svakog studenta uzima samo jedan prosek u opticaj za ukupno iz skole.
Jos nesto Tabela Prosek ima jos 2 atributa Prosek (koji je prosek iz te godine) i atribut broj bodova (gde se mnozi prosek mnozi sa 2). I sad treba da izvucem ukupan broj bodova iz srednje.
Hvala unapred.


Ovako izgleda triger.
Citat:
USE [sistem_obrazovanja]
GO
/****** Object: Trigger [dbo].[BROJ_BODOVA_IZ_SREDNJE] Script Date: 01/17/2012 22:48:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[BROJ_BODOVA_IZ_SREDNJE]
ON [dbo].[PROSEK]
AFTER UPDATE,INSERT, DELETE
AS
BEGIN

UPDATE KANDIDATI

SET KANDIDATI.KN_BROJ_BODOVA_IZ_SKOLE = PROSEK.PR_BODOVI
FROM KANDIDATI
JOIN PROSEK ON
(KANDIDATI.KN_GOD_POL = PROSEK.KN_GOD_POL AND
KANDIDATI.KN_UPISNI_ROK = PROSEK.KN_UPISNI_ROK AND
KANDIDATI.KN_ID = PROSEK.KN_ID)


END
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Kako ponoviti update?18.01.2012. u 17:20 - pre 149 meseci
ne uspevam da razumem sta tacno pokusavas da uradis. Kazi nam na srpskom sta pokusavas, na primer "hocu da u tabelu Kandidati prepisem vrednost Pr_Bodovi iz tabele Prosek". Onda nam daj CREATE TABLE za tabele Kandidati i prosek, da vidimo o cemu se radi. Deluje cudno je da to radis bas u trigeru, mozda i nije cudno, ali ja ne razumem celu pricu, pa mi je mozda zato cudno. Pokusaj da objasni bolje sta pokusavas.
 
Odgovor na temu

Lazarevic Nebojsa
Beograd

Član broj: 134014
Poruke: 10
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako ponoviti update?19.01.2012. u 12:44 - pre 149 meseci
Citat:
/*==============================================================*/
/* Table: KANDIDATI */
/*==============================================================*/
create table KANDIDATI (
KN_GOD_POL numeric(4) not null,
KN_UPISNI_ROK numeric(1) not null,
KN_ID char(3) not null,
KN_IME varchar(30) not null,
KN_IME_RODITELJA varchar(30) null,
KN_PREZIME varchar(50) not null,
KN_JMBG numeric(13) null,
KN_POL char(1) null default 'N'
constraint CKC_KN_POL_KANDIDAT check (KN_POL is null or (KN_POL in ('M','Z','N'))),
KN_DATUM_RODJENJA datetime null,
KN_BROJ_BODOVA_IZ_SKOLE decimal(2,2) null,
KN_BR_BODOVA_SA_PRIJEMNOG decimal(2,2) null,
constraint PK_KANDIDATI primary key nonclustered (KN_ID, KN_GOD_POL, KN_UPISNI_ROK)
)
go

Citat:

/*==============================================================*/
/* Table: PROSEK */
/*==============================================================*/
create table PROSEK (
KN_ID char(3) not null,
KN_GOD_POL numeric(4) not null,
KN_UPISNI_ROK numeric(1) not null,
PR_GODINA int not null,
PR_PROSEK decimal(2,2) not null,
PR_BODOVI decimal(2,2) null,
constraint PK_PROSEK primary key nonclustered (KN_ID, KN_GOD_POL, KN_UPISNI_ROK, PR_GODINA)
)
go





Treba da sumiram sve bodove iz proseka i prepisem ih u tabelu kandidati u polje ukupno bodova iz skole
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Kako ponoviti update?19.01.2012. u 17:22 - pre 149 meseci
Ako bas moras da radis taj UPDATE, onda si napisao formalno ispravnu UPDATE naredbu. Jedino sto ne treba da se izvrsava u trigeru, nego nezavisno.
Code:

-- IZvrsi ovo u query analyzeru ili SQL Serve Management studio:
UPDATE KANDIDATI
SET KANDIDATI.KN_BROJ_BODOVA_IZ_SKOLE = PROSEK.PR_BODOVI 
FROM KANDIDATI
JOIN PROSEK ON 
(KANDIDATI.KN_GOD_POL = PROSEK.KN_GOD_POL AND 
KANDIDATI.KN_UPISNI_ROK = PROSEK.KN_UPISNI_ROK AND
KANDIDATI.KN_ID = PROSEK.KN_ID)

Meni nije javilo sintaksnu gresku, a test podataka nemam pa ne mogu da vidim kako zaista radi.

Jos uvek mi nisi rekao sta tacno pokusavas da uradis. Ako recimo projektujes novi sistem, onda je dizajn tabela neobican i ovakav update ti najverovatnije uopste nije potreban. Ako radis nesto drugo, onda mozda ima razloga zasto su tabele bas ovakve i ima razloga zasto bas hoces ovakav update.


 
Odgovor na temu

Lazarevic Nebojsa
Beograd

Član broj: 134014
Poruke: 10
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako ponoviti update?22.01.2012. u 16:17 - pre 149 meseci
Sredio sam sve, hvala! :-)
 
Odgovor na temu

[es] :: MS SQL :: Kako ponoviti update?

[ Pregleda: 2121 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.