Садржај
3.0 SQL: Промена садржаја базе
3.2 SQL: Ажурирање података у табелама
3.3 SQL: Брисање података из табела
7.0 Библиотека Flask - пројектни задатак

Имплицитно спајање

Још један начин да се две или више табела споје је тзв. имплицитно спајање. Наиме, ако се након FROM наведе више табела раздвојених зарезима, израчунава се њихов Декартов производ. У случају две табеле то значи да се свака врста прве табеле комбинује са сваком врстом друге табеле. У случају више табела би се свака таква врста комбиновала са сваком врстом наредне табеле итд.

Можемо, на пример, да пишемо:

SELECT *
FROM izostanak, ucenik;

Извршавањем упита добија се следећи резултат:

id

id_ucenik

datum

cas

status

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

1

2021-05-14

1

оправдан

1

Петар

Петровић

м

2006-07-01

1

1

1

1

2021-05-14

1

оправдан

2

Милица

Јовановић

ж

2006-04-03

1

1

1

1

2021-05-14

1

оправдан

3

Лидија

Петровић

ж

2006-12-14

1

1

1

1

2021-05-14

1

оправдан

4

Петар

Миловановић

м

2005-12-08

2

1

1

1

2021-05-14

1

оправдан

5

Ана

Пекић

ж

2005-02-23

2

1

Од свих ових врста, за нас имају смисла само оне у којима је идентификатор ученика из табеле изостанака једнак идентификатору из табеле ученика и њих можемо издвојити клаузулом WHERE.

SELECT *
FROM izostanak i, ucenik u
WHERE i.id_ucenik = u.id;

Извршавањем упита добија се следећи резултат:

id

id_ucenik

datum

cas

status

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

1

2021-05-14

1

оправдан

1

Петар

Петровић

м

2006-07-01

1

1

2

1

2021-05-14

2

неоправдан

1

Петар

Петровић

м

2006-07-01

1

1

3

4

2021-05-14

1

нерегулисан

4

Петар

Миловановић

м

2005-12-08

2

1

4

4

2021-05-14

2

нерегулисан

4

Петар

Миловановић

м

2005-12-08

2

1

5

6

2021-06-01

1

неоправдан

6

Јован

Миленковић

м

2006-04-07

1

2

Наравно, у клаузули WHERE може да се наведе и додатан услов, на пример такав да се додатно ограничимо само на жељени датум.

SELECT *
FROM izostanak i, ucenik u
WHERE i.id_ucenik = u.id AND datum = '2021-05-14';

Извршавањем упита добија се следећи резултат:

id

id_ucenik

datum

cas

status

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

1

2021-05-14

1

оправдан

1

Петар

Петровић

м

2006-07-01

1

1

2

1

2021-05-14

2

неоправдан

1

Петар

Петровић

м

2006-07-01

1

1

3

4

2021-05-14

1

нерегулисан

4

Петар

Миловановић

м

2005-12-08

2

1

4

4

2021-05-14

2

нерегулисан

4

Петар

Миловановић

м

2005-12-08

2

1

6

1

2021-05-14

3

оправдан

1

Петар

Петровић

м

2006-07-01

1

1

Ипак, експлицитно спајање (помоћу JOIN) је пожељније користити од имплицитног. Упити који користе експлицитно спајање издвајају услов за спајање у посебну целину па се лакше разумеју, а на неким системима за управање базама података могу да буду и ефикаснији.

Вежба

Покушај да наредни упит напишеш самостално.

Приказати све регулисане изостанке у читљивом формату (у ком се види име и презиме ученика и датум, час и статус изостанка), али тако да упит користи имплицитно, а не експлицитно спајање.



(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+