Što je sindikat?
Sindikati kombiniraju rezultate iz više SELECT upita u objedinjeni skup rezultata.
Jedini preduvjeti da bi to funkcioniralo je da broj stupaca bude jednak iz svih SELECT upita koje treba kombinirati.
Pretpostavimo da imamo dvije tablice kako slijede
Stvorimo sada UNION upit za kombiniranje obje tablice pomoću DISTINCT-a
SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT column1,column2 FROM `table2`;
Ovdje se duplicirani retci uklanjaju i vraćaju se samo jedinstveni retci.
Napomena: MySQL koristi klauzulu DISTINCT kao zadanu prilikom izvršavanja UNION upita ako ništa nije navedeno.
Stvorimo sada UNION upit koji kombinira obje tablice koristeći ALL
SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;
Ovdje su uključeni duplicirani retci i budući da koristimo ALL.
Zašto koristiti sindikate
Pretpostavimo da postoji nedostatak u dizajnu vaše baze podataka i da koristite dvije različite tablice namijenjene istoj svrsi. Želite objediniti ove dvije tablice u jednu, a izostaviti da se duplicirani zapisi uvuku u novu tablicu. U takvim slučajevima možete koristiti UNION.
Sažetak
- Naredba UNION koristi se za kombiniranje više rezultata pretraživanja SELECT u jedan upit koji sadrži retke svih odabranih upita.
- Broj stupaca i vrsta podataka u naredbama SELECT mora biti jednak kako bi naredba UNION mogla raditi.
- Klauzula DISTINCT koristi se za uklanjanje dvostrukih vrijednosti iz skupa rezultata upita UNION. MySQL koristi klauzulu DISTINCT kao zadanu prilikom izvršavanja UNION upita ako ništa nije navedeno.
- Klauzula ALL koristi se za vraćanje svih čak i duplikata redaka u UNION upitu.
Praktični primjeri korištenja MySQL radnog stola
U našem myFlixDB omogućuje kombiniranje
broj_članova i puna_imena iz tablice Članovi
s
movie_id i naslov iz tablice filmova
Možemo upotrijebiti sljedeći upit
SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `movie_id`,`title` FROM `movies`;
Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate prikazane u nastavku.
membership_number | full_names |
---|---|
1 | Janet Jones |
2 | Janet Smith Jones |
3 | Robert Phil |
4 | Gloria Williams |
5 | Leonard Hofstadter |
6 | Sheldon Cooper |
7 | Rajesh Koothrappali |
8 | Leslie Winkle |
9 | Howard Wolowitz |
16 | 67% Guilty |
6 | Angels and Demons |
4 | Code Name Black |
5 | Daddy's Little Girls |
7 | Davinci Code |
2 | Forgetting Sarah Marshal |
9 | Honey mooners |
19 | movie 3 |
1 | Pirates of the Caribean 4 |
18 | sample movie |
17 | The Great Dictator |
3 | X-Men |