UNION əmrinin istifadə olunması
UNION əmri sadəcə olaraq bir neçə sorğunu bir sorğu kimi birləşdirir. Məs, aşağıdakı sorğu sifarişçi və agentləri birləşdirir:
SELECT snum, sname FROM Salespeople WHERE city = 'Москва' UNION SELECT cnum, cname FROM Customers WHERE city = 'Москва'
Nəticə:
snum sname ----- ------------------ 2001 ТОО Рога и копыта 1001 Иванов
UNION əmrinin istifadəsi üçün iki qaydadan istifadə edilir.
Tiplərin uyğunluğu sadə təyin olunur.
Sütundakı verilənin tipi | Nəticənin tipi |
---|---|
Hər iki sütun qeyd olunmuş L1 və L2 uzunluqlu char tiplidirlər. | L1 və L2-dən ən böyük olan uzunluğa malik char |
Hər iki sütun qeyd olunmuş L1 və L2 uzunluqlu binary tiplidirlər. | L1 və L2 dən ən böyük olan uzunluğa malik binary |
Bir və ya bir neçə varchar tipi | L1 və L2 dən ən böyük olan uzunluğa malik varchar |
Bir və ya bir neçə varbinary tipi | L1 və L2 dən ən böyük olan uzunluğa malik varbinary |
Hər iksi say tiplidir (smallint,money, float) | Verilənlərin tipi ən böyük dəqiqliklə (int=>float) |
UNION avtomatik olaraq çıxışa verilən aşkar sətirləri silir. Əgər siz istəyirsiniz ki bütün sətirlər nəticəyə verilsin onda UNION ALL-dan istifadə edin.
SELECT snum, city FROM Customers UNION ALL SELECT snum, city FROM Salespeople
Nəticə:
snum city ----- ----------- 1001 Москва 1003 Одесса 1002 Рязань 1002 Бобруйск 1001 Лондон 1004 ТОМСК 1007 Караганда 1001 Москва 1002 Хабаровск 1003 Караганда 1004 Сочи 1007 Красноярск
UNION ilə nəticəni sıralamaq ümün ORDER BY-ı istifadə etmək olar. Bu vaxt ORDER BY, UNION-dan çıxan yalnız axırıncıdan sonrakı sorğunu göstərir.
SELECT a.snum, sname, onum, 'Наибольший на ',odate FROM Salespeople a, Orders b WHERE a.snum = b.snum AND b.amt = ( SELECT MAX(amt) FROM Orders c WHERE c.odate = b.odate ) UNION SELECT a.snum, sname, onum, 'Наименьший на ', odate FROM Salespeople a, Orders b WHERE a.snum = b.snum AND b.amt = ( SELECT MIN(amt) FROM Orders c WHERE c.odate = b.odate ) ORDER BY 3
Nəticə:
snum sname onum odate ----- ------- ----- -------------- ----------- 1007 Шилин 3001 Наименьший на 1999-10-03 1002 Петров 3005 Наибольший на 1999-10-03 1002 Петров 3007 Наименьший на 1999-10-04 1001 Иванов 3008 Наименьший на 1999-10-05 1001 Иванов 3008 Наибольший на 1999-10-05 1003 Егоров 3009 Наибольший на 1999-10-04 1002 Петров 3010 Наименьший на 1999-10-06 1001 Иванов 3011 Наибольший на 1999-10-06
3 sadəcə olaraq çıxış sütununun nömrəsidir. Yazıları bu cür sadə sıralamaq olar, yəni ki UNION-u istifadə edərkən sütunların adları ixtiyari cür görünür.
İndi siz ixtiyari sayda soröunu birləşdirməyi bacarırsınız. Əgər sizdə müxtəlif istifadəçilərə aid olan bir-neçə cədvəl varsa, uyğunlaşma eyni cür qarışdırılır və sıralama üsuluna malikdir.
Bununla da suallar haqqında olan sorğunu qurtardıq. Növbəti addımda məlumatların cədvələ necə daxil olması, cədvəllər əsasən necə yaradılır və buna aid olan digər məlumatlar öyrənəcəksiniz. Sorğulara əsasən digər əmrlərdə rast gəlinəcək. Növbəti addım yazıların yerlləçdirmə, dəyişmə və pozulmasına aid olacaq.