Forum » Programiranje » 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)
Te so nekak tako-tako rešeni, potem recimo za tega pa nevem kako bi se lotil:
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:
za študenta 'Janez Novak' izpišite vsa predavanja, ki jih je kdajkoli obiskoval
Tako nekako... Ostala poskusi popraviti sam - če ne bo šlo, ti lahko še vedno pomagam.
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:
Kot so spisani primeri na strani w3schools (recimo: http://www.w3schools.com/sql/sql_where.... )
recimo primer: Izberi vse stranke ki prihajajo iz Mehike
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:
Evo nekako takole bi zadnja prišla v poenostavljeni verziji:
SELECT #predavanja_id FROM STUDENT_PREDAVANJA GROUP BY #student_id
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.
Aha še to: tabele lahko povezuješ tudi z WHERE ukazom namesto JOIN, recimo WHERE table1.id=table2.id.
RootMachine ;)
galu ::
Če govorimo o "Koliko predavanj obiskuje posamezen študent?", potem je v svoji najkrajši obliki to to:
Če hočeš imeti v izpisu kaj več podatkov o študentu, še poveži tabeli in izpiši kaj pač hočeš, npr:
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8463 (5142) | BivšiUser2 |
» | SQL syntax napakaOddelek: Programiranje | 1623 (1114) | MrStein |
» | [Oracle] Osnovno povpraševanje problemOddelek: Programiranje | 1945 (1586) | zdravc |
» | MYSQL vprašanjeOddelek: Programiranje | 1817 (1432) | MrBrdo |
» | [SQL] Kazalci pri grupiranjuOddelek: Programiranje | 855 (732) | Tody |