{"id":37533,"date":"2026-01-08T00:40:49","date_gmt":"2026-01-07T21:40:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37533"},"modified":"2026-01-08T00:40:49","modified_gmt":"2026-01-07T21:40:49","slug":"sqlde-union-kullanimi-veri-birlestirmenin-gucu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/","title":{"rendered":"SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc"},"content":{"rendered":"<p><body><\/p>\n<h2>SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc<\/h2>\n<h2>Giri\u015f: UNION Operat\u00f6r\u00fcn\u00fcn Tan\u0131m\u0131 ve \u00d6nemi<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz veri odakl\u0131 d\u00fcnyas\u0131nda, veritabanlar\u0131 i\u015f s\u00fcre\u00e7lerinin kalbinde yer al\u0131r. \u00c7e\u015fitli kaynaklardan gelen veya farkl\u0131 tablolara da\u011f\u0131lm\u0131\u015f verileri anlaml\u0131 raporlar ve analizler i\u00e7in bir araya getirmek, veritaban\u0131 y\u00f6netiminin temel ta\u015flar\u0131ndan biridir. SQL, bu ihtiyac\u0131 kar\u015f\u0131lamak \u00fczere bir\u00e7ok g\u00fc\u00e7l\u00fc ara\u00e7 sunar ve <code>UNION<\/code> operat\u00f6r\u00fc de bu ara\u00e7lardan biridir. <code>UNION<\/code>, iki veya daha fazla <code>SELECT<\/code> sorgusunun sonu\u00e7 k\u00fcmelerini dikey olarak birle\u015ftirerek tek bir sonu\u00e7 k\u00fcmesi olu\u015fturman\u0131z\u0131 sa\u011flar. Bu sayede, benzer yap\u0131daki ancak farkl\u0131 konumlarda depolanan verileri tek bir g\u00f6r\u00fcn\u00fcm alt\u0131nda toplayabilir, daha kapsaml\u0131 raporlar olu\u015fturabilir ve veri analizi s\u00fcre\u00e7lerinizi kolayla\u015ft\u0131rabilirsiniz.<\/p>\n<p><code>UNION<\/code> operat\u00f6r\u00fc, \u00f6zellikle ayn\u0131 t\u00fcrde bilgi i\u00e7eren ancak farkl\u0131 zaman dilimlerine veya farkl\u0131 operasyonel birimlere ait tablolardaki verileri birle\u015ftirmek istedi\u011finizde paha bi\u00e7ilmez bir ara\u00e7t\u0131r. \u00d6rne\u011fin, bir \u015firketin 2022 y\u0131l\u0131 sat\u0131\u015f verilerini i\u00e7eren bir tablo ile 2023 y\u0131l\u0131 sat\u0131\u015f verilerini i\u00e7eren ba\u015fka bir tabloyu tek bir liste halinde g\u00f6rmek istedi\u011finizde <code>UNION<\/code> devreye girer. Benzer \u015fekilde, farkl\u0131 m\u00fc\u015fteri segmentlerini (bireysel m\u00fc\u015fteriler, kurumsal m\u00fc\u015fteriler) ayr\u0131 tablolarda tutuyor olsan\u0131z bile, t\u00fcm m\u00fc\u015fteri ileti\u015fim bilgilerini tek bir listede toplamak i\u00e7in <code>UNION<\/code> kullanabilirsiniz.<\/p>\n<p>Bu makalede, <code>UNION<\/code> operat\u00f6r\u00fcn\u00fcn temel s\u00f6z diziminden ba\u015flayarak, <code>UNION ALL<\/code> ile aras\u0131ndaki farklara, kullan\u0131m kurallar\u0131na, performans m\u00fclahazalar\u0131na ve \u00e7e\u015fitli pratik senaryolara kadar derinlemesine bir inceleme yapaca\u011f\u0131z. Amac\u0131m\u0131z, SQL geli\u015ftiricilerinin ve veritaban\u0131 y\u00f6neticilerinin <code>UNION<\/code> operat\u00f6r\u00fcn\u00fc etkin ve do\u011fru bir \u015fekilde kullanarak veri birle\u015ftirme i\u015flemlerini optimize etmelerine yard\u0131mc\u0131 olmakt\u0131r.<\/p>\n<h2>UNION Operat\u00f6r\u00fcn\u00fcn Temel S\u00f6z Dizimi ve \u00c7al\u0131\u015fma Prensibi<\/h2>\n<p><code>UNION<\/code> operat\u00f6r\u00fc, iki veya daha fazla <code>SELECT<\/code> ifadesinin sonu\u00e7lar\u0131n\u0131 tek bir sonu\u00e7 k\u00fcmesinde birle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. En temel haliyle, <code>UNION<\/code> operat\u00f6r\u00fcn\u00fcn s\u00f6z dizimi a\u015fa\u011f\u0131daki gibidir:<\/p>\n<pre><code class=\"language-sql\">SELECT s\u00fctun1, s\u00fctun2, ...\nFROM tablo1\nWHERE ko\u015ful1\nUNION\nSELECT s\u00fctun1, s\u00fctun2, ...\nFROM tablo2\nWHERE ko\u015ful2;<\/code><\/pre>\n<p>Burada dikkat edilmesi gereken en \u00f6nemli nokta, <code>UNION<\/code> operat\u00f6r\u00fcn\u00fcn varsay\u0131lan olarak sonu\u00e7 k\u00fcmesindeki yinelenen sat\u0131rlar\u0131 kald\u0131rmas\u0131d\u0131r. Yani, e\u011fer her iki <code>SELECT<\/code> sorgusunun sonu\u00e7lar\u0131nda tamamen ayn\u0131 sat\u0131rlar varsa, <code>UNION<\/code> bu sat\u0131rlardan yaln\u0131zca birini d\u00f6nd\u00fcr\u00fcr. Bu davran\u0131\u015f, <code>DISTINCT<\/code> anahtar kelimesiyle benzerdir ve veri tekille\u015ftirme ihtiyac\u0131 olan durumlarda olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>UNION Operat\u00f6r\u00fcn\u00fcn \u00c7al\u0131\u015fma Kurallar\u0131<\/h3>\n<p><code>UNION<\/code> operat\u00f6r\u00fcn\u00fc ba\u015far\u0131l\u0131 bir \u015fekilde kullanabilmek i\u00e7in belirli kurallara uymak zorunludur:<\/p>\n<p>1.  <strong>S\u00fctun Say\u0131s\u0131 ve S\u0131ras\u0131:<\/strong> Birle\u015ftirilen t\u00fcm <code>SELECT<\/code> ifadeleri ayn\u0131 say\u0131da s\u00fctun i\u00e7ermelidir. Ayr\u0131ca, kar\u015f\u0131l\u0131k gelen s\u00fctunlar\u0131n s\u0131ras\u0131 da \u00f6nemlidir, \u00e7\u00fcnk\u00fc <code>UNION<\/code> bu s\u0131raya g\u00f6re s\u00fctunlar\u0131 e\u015fle\u015ftirir.<br \/>\n2.  <strong>Veri Tipleri:<\/strong> Kar\u015f\u0131l\u0131k gelen s\u00fctunlar\u0131n veri tipleri uyumlu olmal\u0131d\u0131r. Tamamen ayn\u0131 veri tipi olmak zorunda de\u011fildir, ancak veritaban\u0131 sistemi taraf\u0131ndan \u00f6rt\u00fck olarak birbirine d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilecek (\u00f6rne\u011fin, <code>INT<\/code> ile <code>DECIMAL<\/code> veya <code>VARCHAR<\/code> ile <code>NVARCHAR<\/code>) tipler olmal\u0131d\u0131r. Aksi takdirde bir hata olu\u015fur.<br \/>\n3.  <strong>S\u00fctun \u0130simleri:<\/strong> Sonu\u00e7 k\u00fcmesindeki s\u00fctun isimleri, <code>UNION<\/code> ifadesindeki ilk <code>SELECT<\/code> ifadesinden al\u0131n\u0131r. E\u011fer farkl\u0131 <code>SELECT<\/code> ifadelerinde ayn\u0131 mant\u0131ksal s\u00fctun i\u00e7in farkl\u0131 isimler kullan\u0131l\u0131yorsa, sonu\u00e7 k\u00fcmesi ilk sorgudaki ismi kullanacakt\u0131r.<br \/>\n4.  <strong>ORDER BY ve LIMIT\/FETCH:<\/strong> <code>ORDER BY<\/code> veya <code>LIMIT\/FETCH<\/code> (ya da <code>TOP<\/code>) gibi yan t\u00fcmceler, <code>UNION<\/code> ifadesinin tamam\u0131na uygulan\u0131r. Yani, birle\u015ftirilmi\u015f t\u00fcm sonu\u00e7 k\u00fcmesi \u00fczerinde s\u0131ralama veya s\u0131n\u0131rlama yap\u0131l\u0131r. Tek tek <code>SELECT<\/code> ifadelerine <code>ORDER BY<\/code> uygulamak genellikle anlams\u0131zd\u0131r ve baz\u0131 veritabanlar\u0131nda desteklenmez veya parantez i\u00e7inde alt sorgu olarak kullan\u0131lmas\u0131 gerekir.<\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nDiyelim ki bir \u015firketin <code>Calisanlar2022<\/code> ve <code>Calisanlar2023<\/code> ad\u0131nda iki ayr\u0131 tablosu var. Her iki tablo da <code>CalisanID<\/code>, <code>Ad<\/code>, <code>Soyad<\/code> ve <code>Departman<\/code> s\u00fctunlar\u0131n\u0131 i\u00e7eriyor. T\u00fcm \u00e7al\u0131\u015fanlar\u0131 tek bir listede g\u00f6rmek istiyoruz:<\/p>\n<pre><code class=\"language-sql\">SELECT CalisanID, Ad, Soyad, Departman\nFROM Calisanlar2022\nUNION\nSELECT CalisanID, Ad, Soyad, Departman\nFROM Calisanlar2023;<\/code><\/pre>\n<p>Bu sorgu, her iki tablodaki t\u00fcm benzersiz \u00e7al\u0131\u015fanlar\u0131 listeleyecektir. E\u011fer bir \u00e7al\u0131\u015fan hem 2022 hem de 2023 tablolar\u0131nda ayn\u0131 <code>CalisanID<\/code>, <code>Ad<\/code>, <code>Soyad<\/code> ve <code>Departman<\/code> ile yer al\u0131yorsa, sonu\u00e7 k\u00fcmesinde yaln\u0131zca bir kez g\u00f6r\u00fcnecektir.<\/p>\n<h2>UNION ALL: Yinelenen Sat\u0131rlar\u0131 Dahil Etme<\/h2>\n<p><code>UNION<\/code> operat\u00f6r\u00fcn\u00fcn varsay\u0131lan davran\u0131\u015f\u0131, yinelenen sat\u0131rlar\u0131 sonu\u00e7 k\u00fcmesinden \u00e7\u0131karmakt\u0131r. Ancak baz\u0131 durumlarda, t\u00fcm sat\u0131rlar\u0131, yinelenenler dahil olmak \u00fczere, birle\u015ftirmek isteyebiliriz. \u0130\u015fte bu noktada <code>UNION ALL<\/code> operat\u00f6r\u00fc devreye girer.<\/p>\n<p><code>UNION ALL<\/code>, <code>UNION<\/code> ile ayn\u0131 s\u00f6z dizimine sahiptir, ancak yinelenen sat\u0131rlar\u0131 kald\u0131rma i\u015flemini yapmaz. Bu, iki \u00f6nemli sonuca yol a\u00e7ar:<\/p>\n<p>1.  <strong>Yinelenen Sat\u0131rlar:<\/strong> <code>UNION ALL<\/code>, birle\u015ftirilen <code>SELECT<\/code> ifadelerinin sonu\u00e7lar\u0131nda ayn\u0131 olan t\u00fcm sat\u0131rlar\u0131 sonu\u00e7 k\u00fcmesine dahil eder.<br \/>\n2.  <strong>Performans:<\/strong> Yinelenen sat\u0131rlar\u0131 kald\u0131rma i\u015flemi (DISTINCT i\u015flemi), veritaban\u0131 motoru i\u00e7in ek bir maliyet anlam\u0131na gelir. Bu i\u015flem, genellikle sonu\u00e7 k\u00fcmesini s\u0131ralamay\u0131 ve ard\u0131ndan yinelenenleri elemek i\u00e7in taramay\u0131 gerektirir. Dolay\u0131s\u0131yla, <code>UNION ALL<\/code>, <code>UNION<\/code>&#8216;dan genellikle daha h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131r, \u00e7\u00fcnk\u00fc bu ek i\u015flemi yapmaz. E\u011fer yinelenen sat\u0131rlar\u0131n varl\u0131\u011f\u0131 sizin i\u00e7in bir sorun te\u015fkil etmiyorsa veya zaten verilerinizin benzersiz oldu\u011fundan eminseniz, performans avantaj\u0131 nedeniyle <code>UNION ALL<\/code> kullanmak daha iyi bir se\u00e7imdir.<\/p>\n<p><strong>S\u00f6z Dizimi:<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT s\u00fctun1, s\u00fctun2, ...\nFROM tablo1\nWHERE ko\u015ful1\nUNION ALL\nSELECT s\u00fctun1, s\u00fctun2, ...\nFROM tablo2\nWHERE ko\u015ful2;<\/code><\/pre>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n\u00d6nceki <code>Calisanlar2022<\/code> ve <code>Calisanlar2023<\/code> \u00f6rne\u011fini ele alal\u0131m. E\u011fer bir \u00e7al\u0131\u015fan hem 2022 hem de 2023 tablolar\u0131nda yer al\u0131yorsa ve biz bu \u00e7al\u0131\u015fan\u0131n her iki kayd\u0131n\u0131 da g\u00f6rmek istiyorsak (\u00f6rne\u011fin, farkl\u0131 departmanlarda veya farkl\u0131 rollerde yer alm\u0131\u015f olabilece\u011fi i\u00e7in), <code>UNION ALL<\/code> kullan\u0131r\u0131z:<\/p>\n<pre><code class=\"language-sql\">SELECT CalisanID, Ad, Soyad, Departman\nFROM Calisanlar2022\nUNION ALL\nSELECT CalisanID, Ad, Soyad, Departman\nFROM Calisanlar2023;<\/code><\/pre>\n<p>Bu sorgu, 2022 ve 2023 y\u0131llar\u0131ndaki t\u00fcm \u00e7al\u0131\u015fan kay\u0131tlar\u0131n\u0131, yinelenenler dahil olmak \u00fczere, listeleyecektir. E\u011fer ayn\u0131 \u00e7al\u0131\u015fan her iki tabloda da varsa, sonu\u00e7 k\u00fcmesinde iki kez g\u00f6r\u00fcnecektir.<\/p>\n<h2>UNION Kullan\u0131m\u0131nda Dikkat Edilmesi Gerekenler ve Kurallar<\/h2>\n<p><code>UNION<\/code> operat\u00f6r\u00fcn\u00fc etkin bir \u015fekilde kullanmak i\u00e7in yukar\u0131da bahsedilen temel kurallar\u0131n \u00f6tesinde baz\u0131 detaylara dikkat etmek gerekir.<\/p>\n<h3>S\u00fctun Say\u0131s\u0131 ve S\u0131ras\u0131 Uyumu<\/h3>\n<p>Bu kural <code>UNION<\/code>&#8216;\u0131n en kat\u0131 kural\u0131d\u0131r. Birle\u015ftirilen her <code>SELECT<\/code> ifadesi, ayn\u0131 say\u0131da s\u00fctun d\u00f6nd\u00fcrmelidir. Aksi takdirde, veritaban\u0131 bir hata d\u00f6nd\u00fcrecektir. S\u00fctunlar\u0131n s\u0131ras\u0131 da ayn\u0131 derecede \u00f6nemlidir; ilk sorgudaki ilk s\u00fctun, ikinci sorgudaki ilk s\u00fctunla e\u015fle\u015fir ve bu b\u00f6yle devam eder.<\/p>\n<p><strong>Yanl\u0131\u015f Kullan\u0131m \u00d6rne\u011fi:<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT CalisanID, Ad, Soyad\nFROM Calisanlar\nUNION\nSELECT MusteriID, Ad, Soyad, Adres -- Hata! 4 s\u00fctun var\nFROM Musteriler;<\/code><\/pre>\n<h3>Veri Tipleri Uyumu<\/h3>\n<p>Kar\u015f\u0131l\u0131k gelen s\u00fctunlar\u0131n veri tipleri birbiriyle uyumlu olmal\u0131d\u0131r. Veritaban\u0131 motoru, m\u00fcmk\u00fcnse \u00f6rt\u00fck tip d\u00f6n\u00fc\u015f\u00fcmleri yapmaya \u00e7al\u0131\u015f\u0131r. \u00d6rne\u011fin, bir <code>INT<\/code> s\u00fctununu bir <code>DECIMAL<\/code> s\u00fctunuyla veya bir <code>VARCHAR<\/code> s\u00fctununu bir <code>NVARCHAR<\/code> s\u00fctunuyla birle\u015ftirmek genellikle sorunsuz \u00e7al\u0131\u015f\u0131r. Ancak, <code>DATE<\/code> s\u00fctununu <code>INT<\/code> s\u00fctunuyla birle\u015ftirmek gibi uyumsuz durumlar hataya yol a\u00e7acakt\u0131r.<\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nE\u011fer bir tabloda <code>Fiyat<\/code> s\u00fctunu <code>DECIMAL<\/code> olarak tan\u0131mlanm\u0131\u015fken, di\u011fer tabloda <code>Fiyat<\/code> s\u00fctunu <code>INT<\/code> olarak tan\u0131mlanm\u0131\u015fsa, <code>UNION<\/code> i\u015flemi s\u0131ras\u0131nda <code>INT<\/code> de\u011feri <code>DECIMAL<\/code>&#8216;e d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilir. Ancak, <code>DATE<\/code> tipindeki bir s\u00fctunu <code>VARCHAR<\/code> tipindeki bir s\u00fctunla birle\u015ftirirken, veritaban\u0131 motoru <code>DATE<\/code> de\u011ferini <code>VARCHAR<\/code>&#8216;a d\u00f6n\u00fc\u015ft\u00fcrecektir. Bu durum, sonu\u00e7 k\u00fcmesindeki veri tipini ilk sorgudaki s\u00fctunun tipine g\u00f6re belirler.<\/p>\n<pre><code class=\"language-sql\">SELECT UrunAdi, Fiyat DECIMAL(10,2) -- Fiyat ondal\u0131kl\u0131\nFROM Urunler2022\nUNION ALL\nSELECT UrunAdi, Fiyat INT -- Fiyat tam say\u0131\nFROM Urunler2023;<\/code><\/pre>\n<p>Bu durumda, sonu\u00e7 k\u00fcmesindeki <code>Fiyat<\/code> s\u00fctunu <code>DECIMAL(10,2)<\/code> tipinde olacakt\u0131r ve 2023 y\u0131l\u0131ndaki <code>INT<\/code> fiyatlar <code>DECIMAL<\/code>&#8216;e d\u00f6n\u00fc\u015ft\u00fcr\u00fclecektir.<\/p>\n<h3>S\u00fctun \u0130simleri ve Takma Adlar (Aliases)<\/h3>\n<p>Sonu\u00e7 k\u00fcmesindeki s\u00fctun isimleri, <code>UNION<\/code> ifadesindeki ilk <code>SELECT<\/code> ifadesinden al\u0131n\u0131r. E\u011fer ilk <code>SELECT<\/code> ifadesinde s\u00fctunlara takma ad (alias) verilmi\u015fse, bu takma adlar sonu\u00e7 k\u00fcmesi i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT CalisanID AS ID, Ad AS Isim, Soyad AS Soyisim\nFROM Calisanlar\nUNION ALL\nSELECT MusteriID, Ad, Soyad\nFROM Musteriler;<\/code><\/pre>\n<p>Bu sorgunun sonu\u00e7 k\u00fcmesindeki s\u00fctun isimleri <code>ID<\/code>, <code>Isim<\/code> ve <code>Soyisim<\/code> olacakt\u0131r, \u00e7\u00fcnk\u00fc ilk <code>SELECT<\/code> ifadesi bu takma adlar\u0131 kullanm\u0131\u015ft\u0131r.<\/p>\n<h3>ORDER BY ve LIMIT\/FETCH Kullan\u0131m\u0131<\/h3>\n<p><code>ORDER BY<\/code> yan t\u00fcmcesi, <code>UNION<\/code> ifadesinin en sonunda yer almal\u0131d\u0131r ve birle\u015ftirilmi\u015f t\u00fcm sonu\u00e7 k\u00fcmesini s\u0131ralar. Tek tek <code>SELECT<\/code> ifadelerine <code>ORDER BY<\/code> uygulamak, genellikle bir alt sorgu i\u00e7inde olmad\u0131k\u00e7a anlams\u0131zd\u0131r veya veritaban\u0131 taraf\u0131ndan desteklenmez.<\/p>\n<p><strong>Do\u011fru Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT CalisanID, Ad, Soyad FROM Calisanlar2022\nUNION ALL\nSELECT CalisanID, Ad, Soyad FROM Calisanlar2023\nORDER BY Soyad, Ad; -- T\u00fcm birle\u015ftirilmi\u015f sonu\u00e7 k\u00fcmesini s\u0131ralar<\/code><\/pre>\n<p>E\u011fer her bir sorgunun kendi i\u00e7inde s\u0131ralanm\u0131\u015f olmas\u0131n\u0131 istiyorsan\u0131z, bu sorgular\u0131 parantez i\u00e7ine al\u0131p alt sorgu olarak kullanman\u0131z gerekir. Ancak bu, <code>UNION<\/code>&#8216;\u0131n nihai sonucunu de\u011fil, her bir alt sorgunun ara sonucunu s\u0131ralar.<\/p>\n<p><code>LIMIT<\/code> (veya <code>TOP<\/code>, <code>FETCH FIRST<\/code>) yan t\u00fcmcesi de benzer \u015fekilde, t\u00fcm <code>UNION<\/code> ifadesinin en sonunda yer almal\u0131d\u0131r ve birle\u015ftirilmi\u015f sonu\u00e7 k\u00fcmesinden belirli say\u0131da sat\u0131r d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-sql\">SELECT CalisanID, Ad, Soyad FROM Calisanlar2022\nUNION ALL\nSELECT CalisanID, Ad, Soyad FROM Calisanlar2023\nORDER BY Soyad, Ad\nLIMIT 10; -- \u0130lk 10 sat\u0131r\u0131 d\u00f6nd\u00fcr\u00fcr<\/code><\/pre>\n<h2>Pratik Kullan\u0131m Senaryolar\u0131 ve \u00d6rnekler<\/h2>\n<p><code>UNION<\/code> operat\u00f6r\u00fcn\u00fcn g\u00fcc\u00fc, \u00e7e\u015fitli ger\u00e7ek d\u00fcnya senaryolar\u0131nda kendini g\u00f6sterir. \u0130\u015fte baz\u0131 yayg\u0131n kullan\u0131m alanlar\u0131:<\/p>\n<h3>Farkl\u0131 Tablolardan Benzer Yap\u0131daki Verileri Birle\u015ftirme<\/h3>\n<p>Bu, <code>UNION<\/code>&#8216;\u0131n en yayg\u0131n kullan\u0131m \u015feklidir. \u00d6rne\u011fin, ayn\u0131 t\u00fcrden veriyi farkl\u0131 zaman dilimlerine g\u00f6re ay\u0131rarak depolad\u0131\u011f\u0131n\u0131zda (\u00f6rn. <code>Satislar2020<\/code>, <code>Satislar2021<\/code>, <code>Satislar2022<\/code>) veya farkl\u0131 b\u00f6lgelerdeki verileri ayr\u0131 tablolarda tuttu\u011funuzda.<\/p>\n<p><strong>\u00d6rnek: Y\u0131ll\u0131k Sat\u0131\u015f Verilerini Birle\u015ftirme<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT SatisID, MusteriID, UrunID, SatisTarihi, Tutar\nFROM Satislar2020\nUNION ALL\nSELECT SatisID, MusteriID, UrunID, SatisTarihi, Tutar\nFROM Satislar2021\nUNION ALL\nSELECT SatisID, MusteriID, UrunID, SatisTarihi, Tutar\nFROM Satislar2022\nORDER BY SatisTarihi DESC;<\/code><\/pre>\n<p>Bu sorgu, \u00fc\u00e7 farkl\u0131 y\u0131ldaki t\u00fcm sat\u0131\u015f i\u015flemlerini tek bir kronolojik listede birle\u015ftirir. <code>UNION ALL<\/code> kullanmak, her sat\u0131\u015f i\u015fleminin (yinelenen olsa bile) listelenmesini sa\u011flar ve <code>DISTINCT<\/code> i\u015flemi maliyetinden ka\u00e7\u0131n\u0131r.<\/p>\n<h3>Farkl\u0131 Kategorilerdeki Verileri Tek Bir Liste Haline Getirme<\/h3>\n<p>Bazen farkl\u0131 varl\u0131k tiplerini (\u00f6rne\u011fin, \u00e7al\u0131\u015fanlar, m\u00fc\u015fteriler, tedarik\u00e7iler) tek bir genel &#8220;ki\u015fi&#8221; listesi olarak g\u00f6rmek isteyebilirsiniz. Bu durumda, her bir varl\u0131k tipinin ortak \u00f6zelliklerini (ad, soyad, e-posta) birle\u015ftirebilirsiniz.<\/p>\n<p><strong>\u00d6rnek: \u0130leti\u015fim Listesi Olu\u015fturma<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT Ad, Soyad, Eposta, '\u00c7al\u0131\u015fan' AS Rol\nFROM Calisanlar\nWHERE Durum = 'Aktif'\nUNION ALL\nSELECT Ad, Soyad, Eposta, 'M\u00fc\u015fteri' AS Rol\nFROM Musteriler\nWHERE AktifMi = TRUE\nUNION ALL\nSELECT Ad, Soyad, Eposta, 'Tedarik\u00e7i' AS Rol\nFROM Tedarikciler\nWHERE Onayli = TRUE\nORDER BY Rol, Soyad, Ad;<\/code><\/pre>\n<p>Burada, her <code>SELECT<\/code> ifadesine ek bir <code>Rol<\/code> s\u00fctunu ekleyerek, birle\u015ftirilmi\u015f listedeki her ki\u015finin hangi kategoriye ait oldu\u011funu belirtiyoruz. Bu, raporlama ve analiz i\u00e7in olduk\u00e7a faydal\u0131 bir tekniktir.<\/p>\n<h3>Veri Temizli\u011fi ve Tekille\u015ftirme<\/h3>\n<p><code>UNION<\/code>&#8216;\u0131n varsay\u0131lan <code>DISTINCT<\/code> davran\u0131\u015f\u0131, veri temizli\u011fi ve tekille\u015ftirme i\u015flemlerinde kullan\u0131labilir. \u00d6rne\u011fin, farkl\u0131 kaynaklardan gelen ve potansiyel olarak yinelenen kay\u0131tlar\u0131 i\u00e7eren tablolar\u0131n\u0131z varsa, bu kay\u0131tlar\u0131 birle\u015ftirip benzersiz olanlar\u0131 elde edebilirsiniz.<\/p>\n<p><strong>\u00d6rnek: Yinelenen E-posta Adreslerini Bulma (veya Tekille\u015ftirme)<\/strong><br \/>\nDiyelim ki <code>PotansiyelMusteriler<\/code> ve <code>MevcutMusteriler<\/code> ad\u0131nda iki tablonuz var ve her ikisinde de e-posta adresleri bulunuyor. Ortak e-posta adreslerini bulmak veya t\u00fcm benzersiz e-posta adreslerini listelemek isteyebilirsiniz.<\/p>\n<pre><code class=\"language-sql\">SELECT Eposta\nFROM PotansiyelMusteriler\nUNION\nSELECT Eposta\nFROM MevcutMusteriler;<\/code><\/pre>\n<p>Bu sorgu, her iki tablodaki t\u00fcm benzersiz e-posta adreslerini listeleyecektir. E\u011fer bir e-posta adresi her iki tabloda da varsa, sadece bir kez g\u00f6r\u00fcnecektir. E\u011fer t\u00fcm e-posta adreslerini (yinelenenler dahil) g\u00f6rmek isteseydik <code>UNION ALL<\/code> kullan\u0131rd\u0131k.<\/p>\n<h3>Dinamik Raporlama ve Ko\u015fullu Veri Birle\u015ftirme<\/h3>\n<p>Baz\u0131 durumlarda, raporlama ihtiya\u00e7lar\u0131na g\u00f6re farkl\u0131 veri k\u00fcmelerini birle\u015ftirmeniz gerekebilir. <code>UNION<\/code> ile birlikte <code>WHERE<\/code> ko\u015fullar\u0131n\u0131 kullanarak daha esnek raporlar olu\u015fturabilirsiniz.<\/p>\n<p><strong>\u00d6rnek: Farkl\u0131 Durumlardaki Sipari\u015fleri Tek Listede G\u00f6sterme<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT SiparisID, MusteriID, ToplamTutar, 'Tamamland\u0131' AS Durum\nFROM Siparisler\nWHERE SiparisDurumu = 'Tamamland\u0131'\nUNION ALL\nSELECT SiparisID, MusteriID, ToplamTutar, 'Beklemede' AS Durum\nFROM Siparisler\nWHERE SiparisDurumu = 'Beklemede'\nUNION ALL\nSELECT SiparisID, MusteriID, ToplamTutar, '\u0130ptal Edildi' AS Durum\nFROM Siparisler\nWHERE SiparisDurumu = '\u0130ptal Edildi';<\/code><\/pre>\n<p>Bu sorgu, ayn\u0131 tablodan farkl\u0131 filtreleme ko\u015fullar\u0131yla \u00fc\u00e7 ayr\u0131 veri k\u00fcmesi \u00e7ekip, her birine durum etiketi ekleyerek tek bir rapor haline getirir.<\/p>\n<h2>UNION ve JOIN Aras\u0131ndaki Farklar<\/h2>\n<p>SQL&#8217;de veri birle\u015ftirme denince akla gelen di\u011fer bir \u00f6nemli operat\u00f6r de <code>JOIN<\/code>&#8216;d\u0131r. <code>UNION<\/code> ve <code>JOIN<\/code> her ikisi de veri birle\u015ftirme amac\u0131yla kullan\u0131l\u0131r, ancak bunu farkl\u0131 \u015fekillerde yaparlar ve farkl\u0131 senaryolar i\u00e7in uygundurlar. Aralar\u0131ndaki temel farklar\u0131 anlamak, do\u011fru arac\u0131 do\u011fru zamanda kullanmak i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p>*   <strong>UNION (Dikey Birle\u015ftirme):<\/strong><br \/>\n    *   \u0130ki veya daha fazla <code>SELECT<\/code> sorgusunun sonu\u00e7 k\u00fcmelerini <strong>dikey olarak<\/strong> birle\u015ftirir. Yani, bir sorgunun sat\u0131rlar\u0131 di\u011fer sorgunun sat\u0131rlar\u0131n\u0131n alt\u0131na eklenir.<br \/>\n    *   Birle\u015ftirilen sorgular\u0131n <strong>ayn\u0131 say\u0131da ve uyumlu veri tiplerine sahip s\u00fctunlar\u0131<\/strong> olmal\u0131d\u0131r.<br \/>\n    *   Genellikle benzer yap\u0131daki, ancak farkl\u0131 tablolarda (veya ayn\u0131 tablonun farkl\u0131 b\u00f6l\u00fcmlerinde) bulunan verileri tek bir liste halinde toplamak i\u00e7in kullan\u0131l\u0131r.<br \/>\n    *   <code>UNION<\/code> varsay\u0131lan olarak yinelenen sat\u0131rlar\u0131 kald\u0131r\u0131r (<code>DISTINCT<\/code>), <code>UNION ALL<\/code> ise t\u00fcm sat\u0131rlar\u0131 dahil eder.<\/p>\n<p>*   <strong>JOIN (Yatay Birle\u015ftirme):<\/strong><br \/>\n    *   \u0130ki veya daha fazla tablodaki sat\u0131rlar\u0131, aralar\u0131ndaki <strong>ili\u015fkili s\u00fctunlara (anahtar s\u00fctunlar)<\/strong> dayanarak <strong>yatay olarak<\/strong> birle\u015ftirir. Yani, bir tablonun s\u00fctunlar\u0131 di\u011fer tablonun s\u00fctunlar\u0131na eklenir.<br \/>\n    *   Birle\u015ftirilen tablolar\u0131n ortak bir anahtar s\u00fctunu (\u00f6rne\u011fin, <code>MusteriID<\/code>) olmas\u0131 gerekir.<br \/>\n    *   Genellikle ili\u015fkisel veritaban\u0131 tasar\u0131m\u0131nda, farkl\u0131 varl\u0131klar hakk\u0131ndaki bilgileri (\u00f6rne\u011fin, <code>M\u00fc\u015fteriler<\/code> tablosu ile <code>Sipari\u015fler<\/code> tablosu) birle\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n    *   <code>INNER JOIN<\/code>, <code>LEFT JOIN<\/code>, <code>RIGHT JOIN<\/code>, <code>FULL OUTER JOIN<\/code> gibi farkl\u0131 <code>JOIN<\/code> tipleri bulunur ve bunlar e\u015fle\u015fen veya e\u015fle\u015fmeyen sat\u0131rlar\u0131n nas\u0131l dahil edilece\u011fini belirler.<\/p>\n<p><strong>\u00d6zetle:<\/strong><br \/>\n*   <code>UNION<\/code> <strong>sat\u0131rlar\u0131<\/strong> birle\u015ftirir, <code>JOIN<\/code> ise <strong>s\u00fctunlar\u0131<\/strong> birle\u015ftirir.<br \/>\n*   <code>UNION<\/code>, benzer yap\u0131daki verileri farkl\u0131 kaynaklardan bir araya getirirken, <code>JOIN<\/code> ili\u015fkili verileri farkl\u0131 tablolardan bir araya getirir.<\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n<code>M\u00fc\u015fteriler<\/code> tablosu (<code>MusteriID<\/code>, <code>Ad<\/code>, <code>Soyad<\/code>) ve <code>Sipari\u015fler<\/code> tablosu (<code>SiparisID<\/code>, <code>MusteriID<\/code>, <code>Tutar<\/code>) olsun.<\/p>\n<p>*   <strong>JOIN Kullan\u0131m\u0131 (M\u00fc\u015fterilerin Sipari\u015flerini G\u00f6rmek \u0130\u00e7in):<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT M.Ad, M.Soyad, S.SiparisID, S.Tutar\n    FROM Musteriler M\n    INNER JOIN Siparisler S ON M.MusteriID = S.MusteriID;<\/code><\/pre>\n<p>    Bu, her bir m\u00fc\u015fterinin sipari\u015flerini (M\u00fc\u015fteri bilgileri + Sipari\u015f bilgileri) <strong>yatay olarak<\/strong> birle\u015ftirir.<\/p>\n<p>*   <strong>UNION Kullan\u0131m\u0131 (Farkl\u0131 M\u00fc\u015fteri Gruplar\u0131n\u0131 Birle\u015ftirmek \u0130\u00e7in):<\/strong><br \/>\n    Diyelim ki <code>BireyselMusteriler<\/code> ve <code>KurumsalMusteriler<\/code> tablolar\u0131 var.<\/p>\n<pre><code class=\"language-sql\">SELECT MusteriID, Ad, Soyad FROM BireyselMusteriler\n    UNION ALL\n    SELECT MusteriID, Ad, Soyad FROM KurumsalMusteriler;<\/code><\/pre>\n<p>    Bu, t\u00fcm m\u00fc\u015fteri kay\u0131tlar\u0131n\u0131 <strong>dikey olarak<\/strong> birle\u015ftirir.<\/p>\n<h2>Performans M\u00fclahazalar\u0131<\/h2>\n<p><code>UNION<\/code> operat\u00f6r\u00fcn\u00fcn performans\u0131, kullan\u0131lan veri k\u00fcmelerinin boyutu, veritaban\u0131 sistemi ve <code>UNION ALL<\/code> yerine <code>UNION<\/code> kullan\u0131l\u0131p kullan\u0131lmad\u0131\u011f\u0131 gibi fakt\u00f6rlere ba\u011fl\u0131d\u0131r.<\/p>\n<p>1.  <strong>UNION vs. UNION ALL:<\/strong> Daha \u00f6nce de belirtildi\u011fi gibi, <code>UNION<\/code> varsay\u0131lan olarak <code>DISTINCT<\/code> i\u015flemi yapar. Bu, sonu\u00e7 k\u00fcmesini s\u0131ralamay\u0131 ve yinelenenleri kald\u0131rmay\u0131 gerektirir, bu da \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in \u00f6nemli bir performans maliyeti olu\u015fturur. E\u011fer yinelenen sat\u0131rlar\u0131 kald\u0131rman\u0131za gerek yoksa veya verilerinizin zaten benzersiz oldu\u011fundan eminseniz, her zaman <code>UNION ALL<\/code> kullanmay\u0131 tercih edin. Bu, gereksiz bir i\u015flemi atlayarak sorgu performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<\/p>\n<p>2.  <strong>\u0130ndekslerin Rol\u00fc:<\/strong> Birle\u015ftirilen <code>SELECT<\/code> ifadelerindeki <code>WHERE<\/code> ko\u015fullar\u0131nda kullan\u0131lan s\u00fctunlar \u00fczerinde indekslerin bulunmas\u0131, sorgular\u0131n daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olur. \u0130ndeksler, veritaban\u0131n\u0131n belirli sat\u0131rlar\u0131 daha h\u0131zl\u0131 bulmas\u0131n\u0131 sa\u011flar. Ancak, <code>UNION<\/code>&#8216;\u0131n kendisi \u00fczerinde (yani birle\u015ftirme i\u015flemi s\u0131ras\u0131nda) indekslerin do\u011frudan bir etkisi yoktur; etkisi, her bir alt sorgunun veriyi ne kadar h\u0131zl\u0131 getirdi\u011fine ba\u011fl\u0131d\u0131r.<\/p>\n<p>3.  <strong>B\u00fcy\u00fck Veri K\u00fcmeleri:<\/strong> \u00c7ok b\u00fcy\u00fck veri k\u00fcmelerini <code>UNION<\/code> ile birle\u015ftirmek, \u00f6zellikle <code>UNION<\/code> kullan\u0131l\u0131yorsa, \u00f6nemli miktarda ge\u00e7ici depolama alan\u0131 ve i\u015flem g\u00fcc\u00fc gerektirebilir. Veritaban\u0131, yinelenenleri kald\u0131rmak i\u00e7in sonu\u00e7 k\u00fcmesini bellekte veya ge\u00e7ici disk alan\u0131nda saklamak zorunda kalabilir. Bu t\u00fcr durumlarda, sorgunun par\u00e7alar\u0131n\u0131 optimize etmek, gereksiz s\u00fctunlar\u0131 se\u00e7mekten ka\u00e7\u0131nmak ve <code>WHERE<\/code> ko\u015fullar\u0131n\u0131 m\u00fcmk\u00fcn oldu\u011funca daraltmak \u00f6nemlidir.<\/p>\n<p>4.  <strong>Sorgu Optimizasyonu:<\/strong> Veritaban\u0131 optimizasyon ara\u00e7lar\u0131 (\u00f6rne\u011fin, <code>EXPLAIN<\/code> veya <code>ANALYZE<\/code> komutlar\u0131), <code>UNION<\/code> sorgular\u0131n\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve performans darbo\u011fazlar\u0131n\u0131n nerede oldu\u011funu anlaman\u0131za yard\u0131mc\u0131 olabilir. Bu ara\u00e7lar\u0131 kullanarak, sorgunuzun y\u00fcr\u00fctme plan\u0131n\u0131 inceleyebilir ve iyile\u015ftirmeler yapabilirsiniz.<\/p>\n<h2>Geli\u015fmi\u015f UNION Kullan\u0131mlar\u0131<\/h2>\n<p><code>UNION<\/code> operat\u00f6r\u00fc, daha karma\u015f\u0131k SQL yap\u0131lar\u0131yla birle\u015ftirildi\u011finde daha da g\u00fc\u00e7l\u00fc hale gelebilir.<\/p>\n<h3>CTE (Common Table Expressions) ile Birlikte Kullan\u0131m<\/h3>\n<p>CTE&#8217;ler (<code>WITH<\/code> ifadesi), karma\u015f\u0131k sorgular\u0131 daha okunabilir ve y\u00f6netilebilir par\u00e7alara ay\u0131rmak i\u00e7in kullan\u0131l\u0131r. <code>UNION<\/code> ile birlikte CTE&#8217;ler, birden fazla kaynaktan gelen verileri birle\u015ftirip, bu birle\u015ftirilmi\u015f sonu\u00e7 \u00fczerinde daha fazla i\u015flem yapmak i\u00e7in idealdir.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-sql\">WITH TumCalisanlar AS (\n    SELECT CalisanID, Ad, Soyad, 'Aktif' AS Durum\n    FROM Calisanlar\n    WHERE AktifMi = TRUE\n    UNION ALL\n    SELECT CalisanID, Ad, Soyad, 'Pasif' AS Durum\n    FROM Calisanlar\n    WHERE AktifMi = FALSE\n),\nTumKullanicilar AS (\n    SELECT KullaniciID AS ID, KullaniciAdi AS Ad, Soyadi AS Soyad, 'Kullan\u0131c\u0131' AS Tip\n    FROM SistemKullanicilari\n)\nSELECT ID, Ad, Soyad, Durum AS Tip\nFROM TumCalisanlar\nUNION ALL\nSELECT ID, Ad, Soyad, Tip\nFROM TumKullanicilar\nORDER BY Soyad, Ad;<\/code><\/pre>\n<p>Bu \u00f6rnekte, \u00f6nce <code>Calisanlar<\/code> tablosundan aktif ve pasif \u00e7al\u0131\u015fanlar\u0131 bir CTE i\u00e7inde birle\u015ftiriyoruz. Ard\u0131ndan <code>SistemKullanicilari<\/code> tablosundan kullan\u0131c\u0131lar\u0131 ba\u015fka bir CTE&#8217;ye al\u0131yoruz. Son olarak, bu iki CTE&#8217;yi <code>UNION ALL<\/code> ile birle\u015ftirerek t\u00fcm \u00e7al\u0131\u015fan ve sistem kullan\u0131c\u0131lar\u0131n\u0131 tek bir listede topluyoruz. Bu yakla\u015f\u0131m, sorgunun mant\u0131\u011f\u0131n\u0131 daha net hale getirir.<\/p>\n<h3>Alt Sorgular (Subqueries) ile Birlikte Kullan\u0131m<\/h3>\n<p><code>UNION<\/code> operat\u00f6r\u00fc, alt sorgular\u0131n sonu\u00e7lar\u0131n\u0131 birle\u015ftirmek i\u00e7in de kullan\u0131labilir. Bu, her bir <code>SELECT<\/code> ifadesinin kendi i\u00e7inde karma\u015f\u0131k filtreleme veya gruplama i\u015flemleri yapt\u0131\u011f\u0131 durumlarda faydal\u0131d\u0131r.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-sql\">SELECT MusteriID, ToplamSiparisTutari\nFROM (\n    SELECT MusteriID, SUM(Tutar) AS ToplamSiparisTutari\n    FROM Siparisler\n    WHERE SatisTarihi BETWEEN '2022-01-01' AND '2022-12-31'\n    GROUP BY MusteriID\n) AS Yil2022Satislar\nUNION ALL\nSELECT MusteriID, ToplamSiparisTutari\nFROM (\n    SELECT MusteriID, SUM(Tutar) AS ToplamSiparisTutari\n    FROM Siparisler\n    WHERE SatisTarihi BETWEEN '2023-01-01' AND '2023-12-31'\n    GROUP BY MusteriID\n) AS Yil2023Satislar\nORDER BY MusteriID;<\/code><\/pre>\n<p>Bu sorgu, 2022 ve 2023 y\u0131llar\u0131ndaki m\u00fc\u015fteri baz\u0131nda toplam sat\u0131\u015f tutarlar\u0131n\u0131 ayr\u0131 ayr\u0131 hesaplayan iki alt sorgunun sonu\u00e7lar\u0131n\u0131 birle\u015ftirir. Her alt sorgu kendi i\u00e7inde gruplama ve filtreleme yapar, ard\u0131ndan <code>UNION ALL<\/code> bu iki sonu\u00e7 k\u00fcmesini birle\u015ftirir.<\/p>\n<h3>Farkl\u0131 Veritaban\u0131 Sistemlerinde UNION<\/h3>\n<p><code>UNION<\/code> operat\u00f6r\u00fc, ANSI SQL standard\u0131n\u0131n bir par\u00e7as\u0131d\u0131r ve bu nedenle \u00e7o\u011fu ili\u015fkisel veritaban\u0131 y\u00f6netim sisteminde (RDBMS) (PostgreSQL, MySQL, SQL Server, Oracle vb.) benzer \u015fekilde \u00e7al\u0131\u015f\u0131r. Ancak, baz\u0131 k\u00fc\u00e7\u00fck sentaks farkl\u0131l\u0131klar\u0131 veya \u00f6zellikler olabilir:<br \/>\n*   <code>LIMIT<\/code> yerine <code>TOP<\/code> (SQL Server) veya <code>FETCH FIRST<\/code> (Oracle) kullan\u0131lmas\u0131.<br \/>\n*   Veri tipi d\u00f6n\u00fc\u015f\u00fcmlerinin nas\u0131l ele al\u0131nd\u0131\u011f\u0131na dair ince farkl\u0131l\u0131klar.<br \/>\nGenel olarak, <code>UNION<\/code>&#8216;\u0131n temel kurallar\u0131 ve s\u00f6z dizimi evrenseldir.<\/p>\n<h2>Sonu\u00e7 ve \u00d6zet<\/h2>\n<p>SQL&#8217;deki <code>UNION<\/code> operat\u00f6r\u00fc, farkl\u0131 kaynaklardan gelen veya mant\u0131ksal olarak ayr\u0131lm\u0131\u015f benzer yap\u0131daki verileri tek bir sonu\u00e7 k\u00fcmesinde birle\u015ftirmek i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. <code>UNION<\/code>&#8216;\u0131n varsay\u0131lan <code>DISTINCT<\/code> davran\u0131\u015f\u0131, veri tekille\u015ftirme i\u00e7in kullan\u0131\u015fl\u0131yken, <code>UNION ALL<\/code> yinelenenleri dahil ederek daha iyi performans sunar.<\/p>\n<p>Bu makalede, <code>UNION<\/code>&#8216;\u0131n temel s\u00f6z dizimi, s\u00fctun say\u0131s\u0131 ve veri tipleri gibi kritik kullan\u0131m kurallar\u0131, <code>ORDER BY<\/code> ve <code>LIMIT<\/code> gibi yan t\u00fcmcelerle etkile\u015fimi ayr\u0131nt\u0131l\u0131 olarak incelenmi\u015ftir. Ayr\u0131ca, y\u0131ll\u0131k sat\u0131\u015f verilerini birle\u015ftirme, ileti\u015fim listeleri olu\u015fturma ve veri temizli\u011fi gibi pratik kullan\u0131m senaryolar\u0131yla <code>UNION<\/code>&#8216;\u0131n ger\u00e7ek d\u00fcnya uygulamalar\u0131 g\u00f6sterilmi\u015ftir. <code>UNION<\/code> ile <code>JOIN<\/code> aras\u0131ndaki temel farklar\u0131 anlamak, do\u011fru veri birle\u015ftirme stratejisini se\u00e7mek i\u00e7in hayati \u00f6neme sahiptir. Performans m\u00fclahazalar\u0131, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken <code>UNION ALL<\/code>&#8216;\u0131n avantajlar\u0131n\u0131 vurgulam\u0131\u015ft\u0131r. Son olarak, CTE&#8217;ler ve alt sorgularla <code>UNION<\/code>&#8216;\u0131n geli\u015fmi\u015f kullan\u0131mlar\u0131, karma\u015f\u0131k veri birle\u015ftirme g\u00f6revlerini daha y\u00f6netilebilir ve okunabilir hale getirmenin yollar\u0131n\u0131 g\u00f6stermi\u015ftir.<\/p>\n<p><code>UNION<\/code> operat\u00f6r\u00fcn\u00fc do\u011fru ve etkin bir \u015fekilde kullanmak, SQL geli\u015ftiricilerinin ve veritaban\u0131 profesyonellerinin daha g\u00fc\u00e7l\u00fc, esnek ve kapsaml\u0131 raporlar ve analizler olu\u015fturmas\u0131na olanak tan\u0131r. Veritaban\u0131 yeteneklerinizin kilidini a\u00e7mak i\u00e7in bu g\u00fc\u00e7l\u00fc arac\u0131 ustaca kullanmay\u0131 \u00f6\u011frenmek, veri y\u00f6netimi becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc\nGiri\u015f: UNION Operat\u00f6r\u00fcn\u00fcn Tan\u0131m\u0131 ve \u00d6nemi\nG\u00fcn\u00fcm\u00fcz veri odakl\u0131 d\u00fcnyas\u0131nda, veritaba","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1505],"tags":[],"class_list":{"0":"post-37533","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-sql-2","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL&#039;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL&#039;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc\" \/>\n<meta property=\"og:description\" content=\"SQL&#039;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc Giri\u015f: UNION Operat\u00f6r\u00fcn\u00fcn Tan\u0131m\u0131 ve \u00d6nemi G\u00fcn\u00fcm\u00fcz veri odakl\u0131 d\u00fcnyas\u0131nda, veritaba\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-07T21:40:49+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc\",\"datePublished\":\"2026-01-07T21:40:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\"},\"wordCount\":2994,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"SQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\",\"name\":\"SQL'de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-07T21:40:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL'de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/","og_locale":"tr_TR","og_type":"article","og_title":"SQL'de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc","og_description":"SQL'de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc Giri\u015f: UNION Operat\u00f6r\u00fcn\u00fcn Tan\u0131m\u0131 ve \u00d6nemi G\u00fcn\u00fcm\u00fcz veri odakl\u0131 d\u00fcnyas\u0131nda, veritaba","og_url":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-07T21:40:49+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc","datePublished":"2026-01-07T21:40:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/"},"wordCount":2994,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["SQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/","url":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/","name":"SQL'de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-07T21:40:49+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-union-kullanimi-veri-birlestirmenin-gucu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL&#8217;de UNION Kullan\u0131m\u0131: Veri Birle\u015ftirmenin G\u00fcc\u00fc"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37533"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37533\/revisions"}],"predecessor-version":[{"id":37534,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37533\/revisions\/37534"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}