15 Ekim 2010 Cuma

SQL' de Union ve Union All Kullanımı

Union Deyimi SQL' de iki tablodan birden kayıt çekmek için kullanılır. Ancak çekilecek kolonların aynı veri tipinden olması gerekir. Ayrıca, çeklen veriler birbirinden farklı olmalıdır. Aynı olanlardan verilerden yalnızca birisini seçer.

Örneğin; Okul adında bir veritabanı ve bunun içine de 2 adet sınıf tablosu oluşturalım.

CREATE DATABASE Okul

CREATE TABLE Sinif2(OgrenciAdiSoyadi Varchar(100))
INSERT INTO Sinif2( OgrenciAdiSoyadi)
VALUES('Gökhan Yılan')
INSERT INTO Sinif2( OgrenciAdiSoyadi)
VALUES('Nurdan Kuzey')
INSERT INTO Sinif2( OgrenciAdiSoyadi)
VALUES('Emine Küçük')

CREATE TABLE Sinif3(OgrenciAdiSoyadi Varchar(100))
INSERT INTO Sinif3( OgrenciAdiSoyadi)
VALUES('Gökhan Yılan')
INSERT INTO Sinif3( OgrenciAdiSoyadi)
VALUES('Nurdan Kuzey')
INSERT INTO Sinif3( OgrenciAdiSoyadi)
VALUES('Duygu Şahin')
INSERT INTO Sinif3( OgrenciAdiSoyadi)
VALUES('Emir Alma')
INSERT INTO Sinif3( OgrenciAdiSoyadi)
VALUES('İlknur Bay')

Bu iki sınıfta ki öğrencileri bir arada görüntülemek için Union komutunu kullanabiliriz;


SELECT *
FROM  Sinif3
UNION
SELECT
*

FROM Sinif2
ORDER BY OgrenciAdiSoyadi


Bu kod bize sınıflarda ki öğrencilerin ismini getirir. Fakat aynı isimde olan öğrencilerin ismi sadece bir defa gelir. Hepsini görüntülemek için ise Union All komutunu kullanabilirz;

SELECT *
FROM Sinif3
UNION ALL
SELECT
*

FROM Sinif2
ORDER BY OgrenciAdiSoyadi

ORDER BY Union ile oluşturulan sorgularda sadece son koşul da kullanılabilir. İlk sorgu da kullanılması bize hata vermesine neden olur.

2 yorum:

  1. daha güzel bir örnek verilse ve bu örnek saysıı arttırılsa çok güzel olurdu ama genede teşkkürler

    YanıtlaSil
  2. gayet net bi anlatim olmus, baslangic seviyesinde arkadaslara cok faydasi olacagini dusunuyorum, eline saglik

    YanıtlaSil