» »

Podatkovne baze - SQL enostavne poizvedbe

Podatkovne baze - SQL enostavne poizvedbe

kratos ::

Evo, delam neke naloge v SQL jeziku pa me samo zanima če sem se jih prav lotil če bi bil kdo tako prijazen in mi povedal oz. me popravil:

PREDAVANJA (#predavanja_id, #ucilnica_id, naslov, profesor)
STUDENT (#student_id, naziv, vpisna_stevilka, datum_rojstva, leto_vpisa, nacin_studija)
STUDENT_PREDAVANJA (#id, #student_id, #predavanja_id, leto_obiskovanja)
UCILNICA (#ucilnica_id, prostor)

Katera predavanja potekajo v učilnici P01?
SELECT #ucilnica_id FROM PREDAVANJA WHERE #ucilnica_id ='P01'
Izpiši vse podatke o izrednih studentih, ki se pišejo 'Novak'!
SELECT * FROM STUDENT WHERE nacin_studija ='izredni' AND naziv = 'Novak'
Koliko predmetov predava profesor Novak?
SELECT * FROM PREDAVANJA WHERE profesor = 'Novak'
za študenta 'Janez Novak' izpišite vsa predavanja, ki jih je kdajkoli obiskoval
SELECT #predavanja_id FROM STUDENT_PREDAVANJA WHERE student_id= '%Janez Novak%'
Izpišite ime učilnice, kjer predava profesor Zajc!
SELECT * FROM UCILNICA WHERE profesor = Zajc


Te so nekak tako-tako rešeni, potem recimo za tega pa nevem kako bi se lotil:
Koliko predavanj obiskuje posamezen študent?
  • spremenil: kratos ()

Groove ::

Kjer piše, da izpiši npr. predavanja, učilnico, študenta... najbrž ne bo ok, če izpišeš ID, potrebuješ naziv ali kaj podobnega. Strukturo baze vam je dal profesor/asistent? :|

Zadnje vprašanje:
SELECT 
	COUNT(pred.#pred_id), 
	stud.Naziv
FROM 
	STUDENT_PREDAVANJA pred
INNER JOIN 
	STUDENT stud ON stud.student_id = pred.student_id
-- WHERE 
	-- leto_obiskovanja = DATEPART(YEAR, GETDATE()) 
-- če hočeš dobiti samo letošnja predavanja
GROUP BY 
	#student_id


za študenta 'Janez Novak' izpišite vsa predavanja, ki jih je kdajkoli obiskoval
SELECT 
	pred.naslov
FROM 
	predavanja pred 
INNER JOIN 
	STUDENT_PREDAVANJA studpred ON studpred.#predavanja_id = pred.predavanja_id
INNER JOIN 
	STUDENT stud ON stud.student_id = studpred.student_id AND stud.naziv = 'Janez Novak'


Tako nekako... Ostala poskusi popraviti sam - če ne bo šlo, ti lahko še vedno pomagam.

kratos ::

Hvala za odgovor, ampak mislim da je tole že malce višji nivo :) INNER JOIN nismo niti obravnavali. Pisali smo 2,3 vrstice, čist banalno otroški primeri, to so tisti začetki samih osnov. Sicer vem da je tvoj način popolnoma pravilen in se tako stvar dela ampak se da pri vsem tem skenslati INNER JOIN ?
Nekak tako bi moglo izgledat kot sem na začetku napisal recimo:
SELECT #ucilnica_id FROM PREDAVANJA WHERE #ucilnica_id ='P01'


Kot so spisani primeri na strani w3schools (recimo: http://www.w3schools.com/sql/sql_where.... )
recimo primer: Izberi vse stranke ki prihajajo iz Mehike
 SELECT * FROM Customers WHERE Country='Mexico';

Zgodovina sprememb…

  • spremenil: kratos ()

kratos ::

*Nemorem več editat posta

Evo nekako takole bi zadnja prišla v poenostavljeni verziji:
SELECT #predavanja_id FROM STUDENT_PREDAVANJA GROUP BY #student_id

kratos ::

Torej mi zna kdo povedat če je ta način reševanja kakor toliko pravilen ?

hexor ::

Zgleda pravilen, samo pazi pri poimenovanju stolpcev v tabeli v poizvedbah, na primer: predavanja_id namesto #predavanja_id.

Aha še to: tabele lahko povezuješ tudi z WHERE ukazom namesto JOIN, recimo WHERE table1.id=table2.id.
RootMachine ;)

kratos ::

Super, hvala ti.

galu ::

Če govorimo o "Koliko predavanj obiskuje posamezen študent?", potem je v svoji najkrajši obliki to to:

SELECT student_id, COUNT(*) FROM STUDENT_PREDAVANJA GROUP BY student_id


Če hočeš imeti v izpisu kaj več podatkov o študentu, še poveži tabeli in izpiši kaj pač hočeš, npr:

SELECT s.student_id, s.naziv, COUNT(*)
FROM STUDENT_PREDAVANJA s_p, STUDENT s
WHERE  s_p.student_id = s.student_id
GROUP BY s_p.student_id


P.S. pri taki kombinaciji SELECT in GROUP BY bi znala kak SUPB gnjaviti, ker se atributi ne ujemajo. To lahko rešiš z npr. vmesno tabelo ali pa vgnezdenim SELECT stavkom.
Tako to gre.

Zgodovina sprememb…

  • spremenil: galu ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL vprasanje (strani: 1 2 )

Oddelek: Programiranje
687822 (4501) BivšiUser2
»

SQL syntax napaka

Oddelek: Programiranje
121462 (953) MrStein
»

[Oracle] Osnovno povpraševanje problem

Oddelek: Programiranje
151776 (1417) zdravc
»

MYSQL vprašanje

Oddelek: Programiranje
131656 (1271) MrBrdo
»

[SQL] Kazalci pri grupiranju

Oddelek: Programiranje
8760 (637) Tody

Več podobnih tem