[ Zidar @ 14.06.2012. 16:44 ] @
Na jednom sajtu sam pronasao ovakav zadatak. Prodavnica kucnih ljubimaca ima ptice koje hrani mesavinom zita (Grain) i voca (Fruit). Ptice se nalaze u jednoj listi, zitarice i voce u zasebnim liatama. Liste su predstavlejne tabelama u SQL bazi podataka. Treba napoisati kveri koji daje ovakav rezultat: Code: Code Bird Grain Fruit ---- ------- ------ ------ 1 Pigeon Rice Banana 1 Pigeon Wheat Guava 1 Pigeon NULL Mango 2 Sparrow Corn Grapes 2 Sparrow Millet NULL 3 Parrot NULL NULL Ptice, zitarice i voce se nalaze u zasebnim tabelama, koje izgledaju ovako: Code: SELECT * FROM TC1_Birds ; Code Name ----------- ---------- 1 Pigeon 2 Sparrow 3 Parrot (3 row(s) affected) SELECT * FROM TC1_Grains ; Code Grain ----------- ---------- 1 Wheat 1 Rice 2 Corn 2 Millet (4 row(s) affected) SELECT * FROM TC1_FRuits ; Code Fruit ----------- ---------- 1 Banana 1 Mango 1 Guava 2 Grapes (4 row(s) affected) U svim tabelama, Code predstavlja pticu. Zadatak se moze iskazati i ovako: Za svaku pticu napisti onoliko redova koliko je potrebno da se izlistaju tacno jednom svaka zitarica i svako voce koje ta ptica jede. Ako nemamo podatke za neku pticu, ni za voce ni za zitarice, pticu ipak treba navesti u listi, staviti NULL u kolone Grain i Fruit. Evo skripti za kreiranje i popunjavanje tabela: Code: IF OBJECT_ID('TC1_BIRDS','U') IS NOT NULL BEGIN DROP TABLE TC1_BIRDS END GO CREATE TABLE TC1_BIRDS( Code INT, Name VARCHAR(10) ) GO INSERT INTO TC1_BIRDS(Code,Name) SELECT 1,'Pigeon' UNION ALL SELECT 2,'Sparrow' UNION ALL SELECT 3,'Parrot' GO IF OBJECT_ID('TC1_GRAINS','U') IS NOT NULL BEGIN DROP TABLE TC1_GRAINS END GO CREATE TABLE TC1_GRAINS( Code INT, Grain VARCHAR(10) ) GO INSERT INTO TC1_GRAINS(Code,Grain) SELECT 1,'Wheat' UNION ALL SELECT 1,'Rice' UNION ALL SELECT 2,'Corn' UNION ALL SELECT 2,'Millet' IF OBJECT_ID('TC1_FRUITS','U') IS NOT NULL BEGIN DROP TABLE TC1_FRUITS END GO CREATE TABLE TC1_FRUITS( Code INT, Fruit VARCHAR(10) ) GO INSERT INTO TC1_FRUITS(Code,Fruit) SELECT 1,'Banana' UNION ALL SELECT 1,'Mango' UNION ALL SELECT 1,'Guava' UNION ALL SELECT 2,'Grapes' Mozgalica je postavljena u kategoriji 'Advanced'. N prvi pogled, ne izgleda toliko advanced, ali nikad se ne zna. Pozeljna su resenja za verzije MS SQL 2000 pa nagore, ORACLE, MySQL, PostGreSQL, Firebird, Access, svi su pozvani da ucestvuju. Srecan rad :-) |