Access Veritabanı Bağlantısı

Set Conn=Server.CreateObject(“ADODB.Connection”)
Conn.Provider=”Microsoft.Jet.OLEDB.4.0″
Conn.Open “c:/webdata/northwind.mdb”

Set Conn = server.CreateObject(“ADODB.connection”)
Conn.Open “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=”&Server.MapPath(“data.mdb”)&””

‘Conn.Open “driver={microsoft access driver (*.mdb)}; DBQ=” & Server.MapPath(“data.mdb”)

SQL Sorgulama

SQL SORGULAMA DİLİ

 AVG || BETWEEN  || COUNT || DISTINCT || GROUP BY || HAVING || IN || JOIN || LIKE MAX ve MIN || SUM || UNION || WHERE 

Sunucu tabanlı bir programlama dili ile uğraşıyorsanız ve bu uğraşının içinde veritabanı varsa, SQL size hiç yabancı gelmeyecektir. Bu deyim, Dr. Edgar F. Codd ve IBM tarafından geliştirilen Structured Query Language (Yapısal Sorgu Dili) kelimelerinden geliyor. Biz bu dilin, sunucu tabanlı programlama dillerinde, veri tabanı içindeki kayıtlar arasında sorgulama yapma kısmını inceleyeceğiz. Web sayfalarının en önemli özelliklerinden birisi de, sayfanın açılma hızıdır. Eğer sayfanızda, bir veritabanından bilgi alış-verişi yapıyorsanız, hedef noktaya, yani veritabanı içindeki, sadece istenilen kayıtlara ulaşmak, sayfanızın açılma hızını arttıracaktır. O halde, istenilen kayıtlara ulaşmak için SQL sorgulama dilini iyi bilmek lazımdır.

Bu dili öğrenirken, oluşturacağımız bir veritabanı üzerinde işlem yapacağız. Bu veritabanını Microsoft Access programı ile oluşturacağız. Projemiz, bir derneğin üyeleri için bir veritabanı oluşturup, bu veritabanı içinde sorgulama yapmaktır. İki tablodan sorgulama yapmasını öğrenebilmek için, veritabanını iki kısımda oluşturuyoruz. Birinci kısım, üye bilgilerinin olduğu tablo (uye).

 

İkinci kısım ise, üyelerin avans ve prim durumlarını gösteren bir tablo olacaktır (kasa).

 

Bir veri tabanı içindeki kayıtlar arasında seçim yapmak için, SELECT deyimi kullanılır. Veri tabanı içinde birden fazla tablo olabilir. Buna göre hangi tablodan seçim yapacağınızı belirtmelisiniz. SQL ile veritabanına FROM deyimi ile ulaşılır. Projemizdeki uye adlı tabloya ulaşıp, bütün bilgileri okumak için şöyle bir ifade yazılmalıdır.

SQL = "SELECT * FROM uye"

Program bu ifadeyi görünce, uye adlı tablodaki tüm sütun başlıkları ve kayıtları tek tek okuyacaktır. Burada kullandığımız [*] ifadesi, bütün sütun başlıkları demektir. Eğer, bu tablo içindeki bir veya bir kaç sütun başlığı okunmak istenirse, bu sütun başlık isimlerini SELECT deyiminden sonra yazmak lazımdır. Mesela uye adlı tablodan, sadece AD, SOYAD ve MESLEK sütun başlıklarına ait kayıtları okumak istediğimizde, şöyle bir ifade yazılmalıdır.

SQL = "SELECT AD, SOYAD, MESLEK FROM uye"

Buna göre, uye adlı tablodaki başka bir sütun başlığına ulaşamazsınız. Program ancak belirtilen sütun başlıklarına ait kayıtları okuyarak listeler. Eğer bunların dışında bir sütuna ulaşmak isterseniz, ASP programı şöyle bir hata verir.

ADODB.Fields error '800a0cc1' 
ADO could not find the object in the collection 
corresponding to the name or ordinal 
reference requested by the application. 
/sql/sql_02.asp, line 26 

Veri tabanı içindeki kayıtları, belirli bir düzende okumak ve listelemek için ORDER BY komutu kullanılır. Bu komuttan sonra, sıralamanın hangi sütun başlığına göre yapılacağını bildirmelisiniz. Aksi belirtilmedikçe, sıralamayı artan şekilde yapar. Yani, sayısal verileri, küçükten büyüğe, alfanümerik verileri de, A’dan Z’ye göre sıralayarak listeler. Mesela, uye adlı tablodan AD, SOYAD ve MAAS adlı sütün başlıkları altındaki kayıtları listelerken, AD‘a göre sıralamak için şöyle bir ifade yazılmalıdır.

SQL = "SELECT AD, SOYAD, MAAS FROM uye ORDER BY AD"

Eğer, MAAS adlı sütun başlığına göre sıralarsanız, liste MAAS sütunundaki, rakamlara göre, küçükten büyüğe göre sıralanır. Bu durumu tersine çevirmek isterseniz, sütun başlığının yanına artma veya azalma durumunu belirtmelisiniz. Listeyi artan şekilde sıralamak için, ASC (ascending) komutu, azalan şekilde sıralamak için DESC (descending) komutu kullanılır. Mesela AD, SOYAD ve MAAS sütun başlıkları altındaki kayıtları listelerken, MAAS sütun başlığındaki verilere göre, büyükten küçüğe doğru sıralamak için, şöyle bir ifade yazılır.

SQL = "SELECT AD, SOYAD, MAAS FROM uye ORDER BY MAAS DESC"

Sıralamayı birden fazla sütun başlığına göre yaptırmak için, sırası ile sütun başlıkları yazılmalıdır. Yani, asıl sıralama yapılacak sütun başlığı ilk yazılır. Bundan sonra yazılacak sütun başlıkları, kendi içinde sıralanır. Mesela, uye adlı tablodaki AD, MESLEK ve MAAS sütun başlıkları altındaki kayıtları, ilk önce MESLEK sütun başlığındaki verileri azalan, sonra aynı meslek grupları içinde kalanları da, MAAS sütun başlığındaki verilere göre artan şekilde sıralamak için, şöyle bir ifade yazılmalıdır.

SQL = "SELECT AD, MESLEK, MAAS FORM uye ORDER BY MESLEK DESC, MAAS ASC"

Her bir sıralamanın arasına virgül işareti koyarak, sıralama kategorisini arttırabilirsiniz. Yukarıdaki ifadede, iki satır kullandık. Ancak ikinci satırda yazdıklarımız, birinci satıra & işareti ile eklenmiş olduğundan, program bu SQL sorgulamasını tek bir satır olarak algılar. Bundan sonra, karışık bazı sorgulamaları, iki veya daha fazla satırda yapacağız.

Veri tabanı içindeki kayıtlardan aynı olanları görüntülemek istemiyorsanız, DISTINCT komutu kullanmalısınız. Program bu komutun arkasında gördüğü sütun başlığında, aynı veriye sahip olanlardan sadece birini okur. Bu komutla birlikte başka bir sütun başlığına göre sıralama komutu kullanılamaz. Sadece DISTINCT komutundan sonra yazılan sütun başlığı okunabilir. Mesela, uye adlı tablodaki meslek gruplarını öğrenmek için, şöyle bir ifade yazılmalıdır.

SQL = "SELECT DISTINCT MESLEK FROM uye ORDER BY MESLEK DESC"

Veri tabanı içindeki kayıtları listelerken belirli bir şarta göre okunmasını sağlayabilirsiniz. Bunun için, WHERE komutu kullanılır. Bu komuttan sonra yazılan şarta uyan kayıtlar listelenmiş olur. Mesela, uye adlı tablodan, maaşı 2.000.000 ‘un üzerinde olanları listelemek için, şöyle bir ifade yazılır.

SQL = "SELECT AD, SOYAD, MAAS FROM uye WHERE MAAS > 2000000"

Bu şartı belirlerken kullanabileceğiniz işlemciler şunlardır.

  • >  Büyük.
  • <  Küçük.
  • =  Eşit.
  • >=  Büyük veya Eşit.
  • <=  Küçük veya Eşit.
  • <>  Eşit Değil.

Karşılaştırma bir string’e göre yapılacaksa, string tek tırnak içine alınmalıdır. Mesela, uye adlı tablodan mesleği memur olanları görüntülemek için, ifade aşağıdaki gibi yazılmalıdır.

SQL = "SELECT AD, SOYAD, MESLEK FROM uye WHERE MESLEK='memur'"

Sorgulamayı yaparken, tarihlere göre şart koymak için, tarih olarak yazılan değeri # işaretleri arasına almak ve veri tabanındaki tarih formatına uygun olarak yazmak gereklidir. Mesela, uye adlı tablodan, doğum tarihi 01.01.1980’den büyük olanları listelemek için, aşağıdaki ifade yazılmalıdır.

SQL = "SELECT AD, SOYAD, DOGUM_TARIHI FROM uye WHERE DOGUM_TARIHI > #01/01/1980#"

Veri tabanına kayıtları işlerken, bazı kayıtların True/False (Doğru/Yanlış) olarak girilmesi gerekir. Bunu veri tabanında Yes/No olarak tanımlarız. Bu şekilde tanımlanmış olan, kayıt sütunu için, seçmeli kutucuklar çıkar. Bu kutucuklar seçili ise, kaydın değeri 1 (yani True), seçili değilse kaydın değeri, 0 (yani False) olur. Projemizde, üyelerin cinsiyet durumlarını, veri tabanına Yes/No olarak giriyoruz. Yani, bay için 1 değeri, bayan için 0 değeri verilmiş olur. Veri tabanından sadece bayanların listesini almak için, sorgulama aşağıdaki gibi yazılır.

SQL = "SELECT AD, SOYAD, CINSIYET FROM uye WHERE CINSIYET = 0"

Çoğu sorgulamada bir koşul işimizi görmeyebilir. Birden fazla koşul belirtmek için AND, OR veya NOT komutları kullanılır. Bunun için birkaç örnek yapalım. Mesela, erkek öğrencileri listelemek için, aşağıdaki sorgulama yazılmalıdır.

SQL = "SELECT AD, SOYAD, CINSIYET, MESLEK FROM uye WHERE CINSIYET = 1 &_
AND MESLEK = 'öğrenci'"

Maaşı 2.500.000’nin altında olmayan ve doğum tarihi 01.01.1975’ten büyük olanları listelemek için;

SQL = "SELECT AD, SOYAD, DOGUM_TARIHI, MAAS FROM uye"
SQL = SQL&" WHERE DOGUM_TARIHI > #01/01/1975#"
SQL = SQL&" AND NOT MAAS < 2500000"

Serbest meslek sahibi veya muhasebeci olanları isim sırasına göre listelemek için;

SQL = "SELECT AD, SOYAD, MESLEK FROM uye"
SQL = SQL&" WHERE MESLEK = 'serbest'"
SQL = SQL&" OR MESLEK = 'muhasebe'"
SQL = SQL&" ORDER BY AD"

AND ve OR komutlarını istediğimiz kadar kullanabiliriz. Ancak bu komutları arka arkaya kullanmaktansa, IN komutu ile, birden fazla sorgulama aynı anda yapılabilir. Mesela, uye adlı tablodaki, mesleği öğrenci, işçi ve serbest olmayan bayanları soyadlarına göre listelemek için, aşağıdaki gibi sorgulama yapılabilir.

SQL = "SELECT AD, SOYAD, MESLEK, CINSIYET FROM uye"
SQL = SQL&" WHERE NOT MESLEK IN ("serbest','öğrenci','işçi')"
SQL = SQL&" AND CINSIYET = 0"
SQL = SQL&" ORDER BY SOYAD"

Yukarıdaki yazılımda, her bir meslek için ayrı ayrı OR komutu kullanabilirdik. Ancak IN komutu ile bir veri kümesi tanımlamış olduk ve bu veri kümesine göre arama yaptırdık. IN komutu NOT ile beraber kullanılabilir. Yani, yukarıdaki örneğin 2. satırını, şu şekilde de yazabiliriz.

WHERE MESLEK NOT IN ("serbest','öğrenci','işçi')

Sorgulamayı belirli bir aralıkta yaptırmak için, ya AND yada BETWEEN komutu kullanılır. Mesela, uye adlı tablodan, doğum tarihi 01.01.1970 ile 01.01.1980 arasında olan erkekleri, doğum tarihi sırasına göre listelemek için, aşağıdaki ifade yazılabilir.

SQL = "SELECT AD, SOYAD, CINSIYET, DOGUM_TARIHI FROM uye"
SQL = SQL&" WHERE DOGUM_TARIHI > #01/01/1970#"
SQL = SQL&" AND DOGUM_TARIHI < #01/01/1980#"
SQL = SQL&" AND CINSIYET = 1"
SQL = SQL&" ORDER BY DOGUM_TARIHI"

Aynı sorgulama, aşağıdaki şekilde daha kısa olarak yazılabilir.

SQL = "SELECT AD, SOYAD, CINSIYET, DOGUM_TARIHI FROM uye"
SQL = SQL&" WHERE DOGUM_TARIHI BETWEEN #01/01/1970#"
SQL = SQL&" AND #01/01/1980#"
SQL = SQL&" AND CINSIYET = 1"
SQL = SQL&" ORDER BY DOGUM_TARIHI"

Veri tabanı içinde SQL ile arama yaptırmak mümkündür. Yani, bir karakter dizisini, belirli bir sütun başlığı içinde, arama yaptırabilirsiniz. Bunun için, LIKE komutu kullanılır. Arama yapılacak sütun başlığını, WHERE komutundan sonra yazıp, sonra LIKE komutunu yazmak lazımdır. Bu komutla, iki şekilde arama yaptırılabilir. Arama yapılacak karakterleri, tek tırnak içinde ve % işaretleri arasında yazarsanız, içinde bu karakterlerin geçtiği tüm kayıtları verir. Mesela, uye adlı tablodan, soyadında “ak” karakterleri olanları listelemek için, aşağıdaki sorgulama ifadesi yazılır.

SQL = "SELECT AD, SOYAD, MESLEK FROM uye"
SQL = SQL&" WHERE SOYAD LIKE '%ak%'"

Bu aramayı birden fazla sütun başlığında yaptırabilmek için, OR komutu ile devam edebilirsiniz. Yukarıdaki örneğe ileve olarak, adının içinde “ay” karakterleri geçenleri de sorgulayalım.

SQL = "SELECT AD, SOYAD, MESLEK FROM uye"
SQL = SQL&" WHERE SOYAD LIKE '%ak%'"
SQL = SQL&" OR AD LIKE '%ay%'"

Yukarıdaki her iki örnekte de, aranacak karakterlerin başına ve sonuna % işareti koyduk. Böylece, bu karakterlerin, ilgili sütun başlığı altındaki kayıtların herhangi bir yerinde geçip geçmediğini kontrol ederiz. Eğer yüzde işareti koyulmaz ise, eşitlik durumunda olan kayıtları verir. Yani yukarıdaki örneğe göre, soyadı “ak” olanları listeler. Aşağıdaki iki ifade de aynıdır.

WHERE SOYAD LIKE 'ak'
WHERE SOYAD='ak'

LIKE komutu ile belirli sayıda karakteri ve bu karakterlerin içinde geçenleri de belirleyip de aramak mümkündür. Bunun için alt çizgi işareti kullanılır (_ ). Mesela, uye adlı tablodan adı, “er” ile başlayan ve 5 karakter olanları listelemek için, aşağıdaki ifade yazılmalıdır.

SQL = "SELECT AD, SOYAD, MESLEK FROM uye"
SQL = SQL&" WHERE AD LIKE 'er_ _ _'"

Yukarıdaki yazılımda, alt çizgiler birleşik olmalıdır. Yukarıdaki gibi yazdığınız zaman, hata verir veya kayıt bulamaz.

SQL sorgulama dilinde matematiksel işlemler de yaptırmak mümkündür. Bir sütun başlığına ait kayıtların toplamını almak için SUM komutu kullanılır. Mesela, uye adlı tablodaki, tüm üyelere ait maaşların toplamını bulmak için, aşağıdaki ifade yazılır.

SQL = "SELECT SUM (MAAS) FROM uye"

ASP sayfasında bu toplamı gösterebilmek için, kayıt dizisinin arkasına “(0)” yazılmalıdır. Yukarıdaki örneğe göre, maaş toplamı şu şekilde alınır.

<%
Dim veriyolu, SQL, dizi
  Set veriyolu=Server.CreateObject("ADODB.Connection")
  veriyolu.Open ("Driver={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("dernek.mdb"))

SQL = "SELECT SUM(MAAS) FROM uye"
	
Set dizi=veriyolu.Execute(SQL)

Response.Write "Maaş toplamı = "
Response.Write dizi(0)
%>

Burada dizi(0) ifadesi, tüm üyelerin maaş toplamını verir. Eğer, belirli bir kritere göre toplam almak isterseniz, WHERE komutu ile bu koşulu belirleyebilirsiniz. Mesela, uye adlı tablodaki, bayan öğrencilerin maaş toplamını, aşağıdaki ifade ile alabiliriz.

SQL = "SELECT SUM (MAAS) FROM uye"
SQL = SQL&" WHERE MESLEK = 'öğrenci'"
SQL = SQL&" AND CINSIYET = 0"

Aritmetiksel ortalama almak için, AVG komutu kullanılır. Bu komutla, kayıtlardaki rakamlar toplanır ve kayıt sayısına bölünür. Mesela, uye adlı tablodaki, memur ve yazarların maaş ortalamasını almak için, aşağıdaki ifade yazılmalıdır.

SQL = "SELECT AVG (MAAS) FROM uye"
SQL = SQL&" WHERE MESLEK IN ('memur','yazar')"

Bir tablo içindeki en yüksek veya en düşük değeri bulmak için, MAX ve MIN komutları kullanılır. Mesela, uye adlı tablodaki, mesleği, işçi ve avukat olmayanlar içinde, yaşı en genç olanı bulmak için, aşağıdaki ifade yazılır.

SQL = "SELECT MAX (DOGUM_TARIHI) FROM uye"
SQL = SQL&" WHERE MESLEK NOT IN ('işçi','avukat')"

Tablo içindeki kayıtların sayılması için, COUNT komutu kullanılır. Herhangi bir koşul belirtilmediği zaman, tüm kayıtları sayar. Mesela, uye tablosundaki 2.000.000’nun üzerinde maaş alan kaç tane erkek üye olduğunu öğrenmek için, aşağıdaki ifade yazılır.

SQL = "SELECT COUNT(*) FROM uye"
SQL = SQL&" WHERE MAAS > 2000000"
SQL = SQL&" AND CINSIYET = 1"

Veri tabanında bazı işlemleri yaptırırken, gruplandırarak yapmak gerekebilir. Mesela, her meslek grubuna ait işlemler için, ayrı ayrı işlem yapmaktansa, sorgulamayı gruplandırmak daha pratik olacaktır. Bunun için, GROUP BY komutu kullanılır. uye adlı tablodaki, her mesleğin maaş toplamlarını almak için, en pratik çözüm aşağıdaki gibidir.

SQL = "SELECT MESLEK, SUM (MAAS) FROM uye"
SQL = SQL&" GROUP BY MESLEK"

ASP programında, hem meslek gruplarını görmek, hem de maaş toplamlarını görmek için, yine kayıt dizisi değişkeninden faydalanırız. Yani bu sorgulamayı yaptıktan sonra, değerler aşağıdaki gibi alınır.

<table>
 <tr>
  <td>GRUPLAR</td>
  <td>MAAŞ TOPLAMI</td>
 </tr>

<%
Set dizi = veriyolu.Execute(SQL)
Do While Not dizi.eof
%>

 <tr>
  <td> <% Response.Write dizi(0) %> </td>
  <td> <% Response.Write dizi(1) %> </td>
 </tr>

<%
Loop
dizi.Close
%>

</table>

Buna göre, her grup, kayıt dizisinin bir elemanı olacaktır. Sorgulamayı gruplandırarak yaparken, koşul vermek için, HAVING komutunu kullanmalısınız. Mesela, uye tablosundaki, ortalama maaşın 3.000.000’nun üzerinde olan meslek gruplarına ait, en yüksek maaşları listelemek için, aşağıdaki ifade yazılmalıdır.

SQL = "SELECT MESLEK, MAX (MAAS) FROM uye"
SQL = SQL&" GROUP BY MESLEK"
SQL = SQL&" HAVING AVG (MAAS) > 3000000"

HAVING komutunu kullanırken, MIN, MAX, COUNT, AVG veya SUM komutlarından en az birinin olması gerekir. HAVING komutu WHERE ile karıştırılmamalıdır. WHERE ile, tablo içindeki kayıtları tek tek sorgularken, HAVING grup bazında işlem yapar.

Veri tabanında, birden fazla tablo içinde sorgulama yapmak için, iki tabloyu JOIN metodu birleştirmek gerekir. Bu metod ile, seçim yapılacak olan tablo adları, FROM komutundan sonra yazılır. Birleştirmenin hangi koşulda yapılacağını WHERE komutu ile bildirmelisiniz. Birleştirmeyi yaparken, ilk önce tablo adını, sonra sütun başlığı adını yazmak gerekir. Mesela, kasa tablosundaki prim ve avansların kimlere ait olduğunu göstermek için, aşağıdaki ifade yazılmalıdır.

SQL = "SELECT AD, SOYAD, PRIM, AVANS FROM uye, kasa"
SQL = SQL&" WHERE uye.UYE_NO = kasa.UYE"
SQL = SQL&" ORDER BY AD"

2. satırdaki, “WHERE uye.UYE_NO = kasa.UYE” ifadesi, birleştirmenin olduğu yerdir. Görüldüğü gibi, ilk önce tablo adı ve arkasına sütun başlığı yazılmış. Tablo adı ve sütun başlığı, nokta işareti ile birleştirilmiştir.

İki tabloyu birleştirerek, yukarıda öğrendiğimiz diğer özellikleri kullanmak mümkündür. Mesela, her meslek gruplarına ait, ödenmiş olan prim toplamlarını listelemek için, aşağıdaki sorgulama ifadesi yazılmalıdır.

SQL = "SELECT MESLEK, SUM (PRIM) FROM uye, kasa"
SQL = SQL&" WHERE uye.UYE_NO = kasa.UYE"
SQL = SQL&" GROUP BY MESLEK"
SQL = SQL&" ORDER BY MESLEK"

Yukarıdaki örnekte, birleştirme üye numaralarına göre yapılıyor. Yani, kasa tablosundaki üye numarası ile uye tablosundaki üye numarası aynı ise, o kayda ait meslek gurubunun prim toplamına, kasa tablosundaki prim miktarı eklenir. Bu listeyi ASP sayfasında yazdırma işlemini yukarıda öğrenmiştik. Yani, kayıt dizisinin elemanlarını tek tek çağırıyoruz.

İki tabloyu birleştirmeden sorgulama yapmak için, iç içe sorgulama yapmak gerekir. Mesela, 02.01.2001 tarihinden sonra, 2.000.000’nin üzerinde avans çekmiş üyelerin listesini görüntülemek için, iki adet sorgulama yapmak gerekir. Bunlardan ilki, kasa tablosunda, bu iki koşula uyan üye numaralarını almak olacaktır. Alınan bu üye numaralarına göre, uye tablosundaki üyeler listelenecektir. İfade aşağıdaki gibi yazılır.

SQL = "SELECT UYE_NO, AD, SOYAD, MESLEK FROM uye"
SQL = SQL&" WHERE UYE_NO IN"
SQL = SQL&" (SELECT UYE FROM kasa"
SQL = SQL&" WHERE AVANS > 2000000"
SQL = SQL&" AND KAYIT_TARIHI > #02/01/2001#)"
SQL = SQL&" ORDER BY UYE_NO"

Yukarıdaki örneğe dikkat ettiyseniz, ilk sorgulama parantez işareti içinde yapılıyor. Bu sorgu neticesinde çıkan üye numaraları, ikinci sorgulamanın IN listesini oluşturuyor. Bu listedeki üye numaralarına eşit olan numaralar, ikinci sorguda listeleniyor. İki tabloyu birleştirmenin bir diğer yolu da, UNION komutudur. Bu komutla, iki sorgulamanın sonuçlarını birleştirebilirsiniz. Ancak sorgu neticesinde, aynı sayıda sütun başlığı içermelidir. Mesela, maaşından fazla prim veya avans almış olanları listelemek için, aşağıdaki ifadeler yazılabilir.

SQL = "SELECT AD, SOYAD, MAAS, AVANS, PRIM FROM uye, kasa"
SQL = SQL&" WHERE uye.UYE_NO = kasa.UYE"
SQL = SQL&" AND PRIM > MAAS"
SQL = SQL&" UNION SELECT AD, SOYAD, MAAS, AVANS, PRIM FROM uye, kasa"
SQL = SQL&" WHERE uye.UYE_NO = kasa.UYE"
SQL = SQL&" AND AVANS > MAAS"

Yukarıdaki örnekte, iki adet sorgulama var. Bunlardan ilki primin maaştan büyük olup olmadığını kontrol ediyor. İkincisi ise, avansın maaştan büyük olup olmadığını kontrol ediyor. Bu iki sorgulamanın neticesinde, AD, SOYAD, MAAS, AVANS ve PRIM sonuçları çıkıyor. Her iki sorguyu birleştirmek için, 4. satırda UNION komutu kullanılıyor.