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

Referenciranje

[es] :: MS SQL :: Referenciranje

[ Pregleda: 4019 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gilespy

Član broj: 39868
Poruke: 232
194.106.169.*



+1 Profil

icon Referenciranje01.03.2006. u 21:34 - pre 220 meseci
Imam 4 tabele: Nastavnik, Predmeti, Grupe i Nastava, koja je sastavnica

prethodne tri (u njoj su ID vrednosti).


Hocu da kreiram pogled ili proceduru (jos bolje) koji ce mi omoguciti da

pregledam tacno odredjenog nastavnika (iz tabele Nastava), ali tako sto cu

ga pozvati unosenjem maticnog broja, a ne ID-ja koji zauzima u tabeli.

Ova procedura ne vraca nista (znam zasto, ali ne znam kako da ispraviom),

ali to je najblize sto sam dosao do resenje.


Hvala


CREATE PROCEDURE [dbo].[fond_Nastavnik]


(@JMBG bigint)


AS

SELECT Nastavnik.Ime AS Nastavnik, Nastavnik.JMBG AS JMBG,

SUM(dbo.Predmeti.Vezbe) AS [Ukupno vežbi], SUM(dbo.Predmeti.Predavanja) AS

[Ukupno predavanja]

FROM dbo.Nastava INNER JOIN dbo.Nastavnik ON dbo.Nastava.Nastavnik =

dbo.Nastavnik.NastavnikID

INNER JOIN dbo.Predmeti ON dbo.Nastava.Predmet = dbo.Predmeti.PredmetID


GROUP BY dbo.Nastavnik.NastavnikID, dbo.Nastavnik.Ime, dbo.Nastavnik.JMBG


HAVING (dbo.Nastavnik.NastavnikID = @JMBG)

 
Odgovor na temu

rlj77
Ristanović Ljubo
Beograd

Član broj: 22047
Poruke: 7
*.zv.pttrs.net.



Profil

icon Re: Referenciranje28.03.2006. u 20:22 - pre 219 meseci
Pozdrav,

Probaj ovu fuknciju :

samo jedna primedba sta ako maticni broj pocinje sa "0", trebalo promjeniti Data type za JMBG npr char(13)


CREATE function fond_Nastavnik (@JMBG char(13))
returns @fond_Nastavnika table (
Nastavnik varchar(25),
JMBG char(13),
[Ukupno vežbi] int,
[Ukupno predavanja] int)


AS
begin
insert @fond_Nastavnika
SELECT Nastavnik.Ime AS Nastavnik, Nastavnik.JMBG AS JMBG,

SUM(dbo.Predmeti.Vezbe) AS [Ukupno vežbi], SUM(dbo.Predmeti.Predavanja) AS

[Ukupno predavanja]

FROM dbo.Nastava INNER JOIN dbo.Nastavnik ON dbo.Nastava.Nastavnik =

dbo.Nastavnik.NastavnikID

INNER JOIN dbo.Predmeti ON dbo.Nastava.Predmet = dbo.Predmeti.PredmetID


GROUP BY dbo.Nastavnik.NastavnikID, dbo.Nastavnik.Ime, dbo.Nastavnik.JMBG


HAVING (dbo.Nastavnik.NastavnikID = @JMBG)

return
end





zatim pusti Query:



select * from dbo.fond_Nastavnik('0905977183890')
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Referenciranje29.03.2006. u 16:49 - pre 219 meseci
SELECT Nastavnik.Ime AS Nastavnik, Nastavnik.JMBG AS JMBG,
SUM(dbo.Predmeti.Vezbe) AS [Ukupno vežbi], SUM(dbo.Predmeti.Predavanja) AS
[Ukupno predavanja]
FROM dbo.Nastava INNER JOIN dbo.Nastavnik ON dbo.Nastava.Nastavnik =
dbo.Nastavnik.NastavnikID
INNER JOIN dbo.Predmeti ON dbo.Nastava.Predmet = dbo.Predmeti.PredmetID
GROUP BY dbo.Nastavnik.NastavnikID, dbo.Nastavnik.Ime, dbo.Nastavnik.JMBG
HAVING (dbo.Nastavnik.NastavnikID = @JMBG)


Napisano nece nikad proraditi. HAVING ide uz agregatne funkcije (SUM, COUNT, MIN, MAX) a ne kao kriterijum.
Nisam siguran sta ce ti SUM(dbo.Predmeti.Vezbe) i SUM(dbo.Predmeti.Predavanja) vratiti. Ako su predmeti.vezbe i Predmeti.predavanja numerickog tipa, jos ce i da vrati nesto, ali verovatno besmisleno.

Mozda ti ovo treba u stvari:

SELECT
Nastavnik.Ime AS Nastavnik
, Nastavnik.JMBG AS JMBG
, COUNT(dbo.Predmeti.Vezbe) AS [Ukupno vežbi]
, COUNT(dbo.Predmeti.Predavanja) AS [Ukupno predavanja]
FROM dbo.Nastava
INNER JOIN dbo.Nastavnik ON dbo.Nastava.Nastavnik = dbo.Nastavnik.NastavnikID
INNER JOIN dbo.Predmeti ON dbo.Nastava.Predmet = dbo.Predmeti.PredmetID
GROUP BY dbo.Nastavnik.NastavnikID, dbo.Nastavnik.Ime, dbo.Nastavnik.JMBG
WHERE dbo.Nastavnik.NastavnikID = @JMBG

trebalo bi da dobijes svog nastavnika i koliko vezbi/predavanja on/ona ima





 
Odgovor na temu

[es] :: MS SQL :: Referenciranje

[ Pregleda: 4019 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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