Ba'zan bizda bir necha alohida jadval bo'ladi, lekin ularning natijalarini bitta ro'yxatga birlashtirib ko'rishni xohlaymiz. Misol uchun, savdo ma'lumotlari yillar bo'yicha alohida jadvallarda saqlangan bo'lishi mumkin.
Aytaylik, bizda ikkita jadval bor — biri 2023-yilgi savdolar, ikkinchisi 2024-yilgi savdolar:
savdo_2023:
| nomi | soni |
|---|---|
| Telefon | 10 |
| Kitob | 20 |
savdo_2024:
| nomi | soni |
|---|---|
| Telefon | 15 |
| Daftar | 30 |
Bu ikki jadvalning natijalarini birlashtirish uchun to'plam amallari (set operations) dan foydalanamiz. Eng asosiysi — UNION.
UNION ikkita SELECT so'rovi natijasini bitta natijaga birlashtiradi. Eng muhim xususiyati — UNION takrorlanuvchi qatorlarni olib tashlaydi, ya'ni har bir qiymat natijada faqat bir marta chiqadi.
Ikkala yildagi mahsulot nomlarini birlashtiramiz:
SELECT nomi FROM savdo_2023
UNION
SELECT nomi FROM savdo_2024;Natija:
Daftar
Kitob
TelefonTelefon ikkala jadvalda ham bor edi, lekin UNION uni faqat bir marta chiqardi.
Muhim:
UNIONishlashi uchun ikkalaSELECTham bir xil sondagi ustun qaytarishi kerak. Bu yerda ikkalasi ham bitta ustun (nomi) qaytaryapti.
Agar takrorlarni saqlab qolishni xohlasak, UNION ALL dan foydalanamiz. U hech narsani o'chirmaydi — barcha qatorlarni qoldiradi:
SELECT nomi FROM savdo_2023
UNION ALL
SELECT nomi FROM savdo_2024;Natija:
Telefon
Kitob
Telefon
DaftarBu yerda Telefon ikki marta chiqdi, chunki UNION ALL takrorlarni olib tashlamaydi.
Eslatma:
UNION ALLUNIONga qaraganda tezroq ishlaydi, chunki takrorlarni tekshirib o'tirmaydi. Agar takror bo'lmasligini bilsangiz yoki takrorlar kerak bo'lsa,UNION ALLdan foydalaning.
To'plam amallari yana ikkita bor:
Masalan, ikkala yilda ham sotilgan mahsulotlarni topish:
SELECT nomi FROM savdo_2023
INTERSECT
SELECT nomi FROM savdo_2024;Natija:
TelefonFaqat 2023-yilda sotilib, 2024-yilda sotilmagan mahsulotlar:
SELECT nomi FROM savdo_2023
EXCEPT
SELECT nomi FROM savdo_2024;Natija:
KitobMuhim: Bu uch amal (
UNION,INTERSECT,EXCEPT) natijasini tartiblash uchunORDER BYni eng oxiriga, butun so'rovdan keyin yozasiz. Natijaning aniq tartibda chiqishini istasangiz, doimoORDER BYqo'shing.
Pastdagi kod oynasida savdo_2023 va savdo_2024 jadvallari allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — ikkala yilda sotilgan mahsulotlarning takrorlanmas nomlarini UNION bilan birlashtirib, ularni alifbo tartibida chiqaruvchi so'rov yozish.