﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sql server yinelenen satırları kaldırmak &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/sql-server-yinelenen-satirlari-kaldirmak/feed" rel="self" type="application/rss+xml" />
	<link>https://sqlserveregitimleri.com</link>
	<description>SQL Server ile ilgili her şey</description>
	<lastBuildDate>Fri, 19 May 2023 10:45:57 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>SQL Server&#8217;da İlişkili Tablolarda DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Fri, 19 May 2023 10:27:42 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sql ilişkili tablolar]]></category>
		<category><![CDATA[sql server ilişkili tablo distinct]]></category>
		<category><![CDATA[sql server yinelenen satırları kaldırmak]]></category>
		<guid isPermaLink="false">https://sqlserveregitimleri.com/?p=16336</guid>

					<description><![CDATA[Herkese merhaba. Bu yazıda SQL Server&#8217;da ilişkili tablolarda DISTINCT kullanmadan yinelenen değerleri kaldırmak ile ilgili bilgi vermeye çalışacağım. SQL Server&#8217;da verilerle çalıştığınızda, bazen veri girişleri...]]></description>
										<content:encoded><![CDATA[<p>Herkese merhaba. Bu yazıda SQL Server&#8217;da ilişkili tablolarda DISTINCT kullanmadan yinelenen değerleri kaldırmak ile ilgili bilgi vermeye çalışacağım.</p>
<p><span class="HwtZe" lang="tr"><span class="jCAhz ChMk0b"><span class="ryNqvb">SQL Server&#8217;da verilerle çalıştığınızda, bazen veri girişleri nedeniyle değil, aynı zamanda T-SQL sorgularıyla da yinelenen veriler elde etme olasılıkları vardır.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Çoğumuz DISTINCT anahtar sözcüğünü kullanır.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">DISTINCT kullanmak iyidir, bu yinelenen satırları kaldıracaktır.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Ancak bazı durumlarda DISTINCT sorgu performansını iyileştirmez.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Sorgu, yürütme için daha fazla zaman harcar ve daha fazla veriye sahipsek bu daha fazla zaman olacaktır.<br />
</span></span></span></p>
<p>ROW_NUMBER() kullanarak, sonuç kümesindeki yinelenen değerleri kaldırabiliriz. ROW_NUMBER(), sorgunun sonuç kümesindeki her satıra sıralı bir tamsayı numarası atayan bir fonksiyondur.</p>
<p>Aşağıda konuyla ilgili bir örnek görmektesiniz.</p>
<pre class="line-numbers"><code class="language-sql">-- Bolumler tablosunu olusturma
CREATE TABLE Bolumler (
    BolumID INT PRIMARY KEY,
    BolumAdi VARCHAR(50)
);

-- Calisanlar tablosunu olusturma
CREATE TABLE Calisanlar (
    CalisanID INT PRIMARY KEY,
    Ad VARCHAR(50),
    Soyad VARCHAR(50),
    BolumID INT,
    FOREIGN KEY (BolumID) REFERENCES Bolumler(BolumID)
);

-- Bolumler tablosuna ornek veri ekleme
INSERT INTO Bolumler (BolumID, BolumAdi)
VALUES (1, 'Satış'),
       (2, 'Pazarlama'),
       (3, 'Finans');

-- Calisanlar tablosuna ornek veri ekleme
INSERT INTO Calisanlar (CalisanID, Ad, Soyad, BolumID)
VALUES (1, 'Ahmet', 'Yılmaz', 1),
       (2, 'Ayşe', 'Demir', 2),
       (3, 'Mehmet', 'Kaya', 3),
	   (9, 'Ahmet', 'Yılmaz', 1),
       (4, 'Elif', 'Öztürk', 1),
       (5, 'Ali', 'Şahin', 2),
       (6, 'Fatma', 'Arslan', 3),
	   (7, 'Ayşe', 'Demir', 2),
	   (8, 'Ahmet', 'Yılmaz', 1),
	   (10, 'Mehmet', 'Kaya', 3)

--Sorgu
       
WITH CTE AS (
    SELECT AltSorgu.CalisanID
		  ,AltSorgu.Ad
		  ,AltSorgu.Soyad
		  ,AltSorgu.BolumAdi
          ,ROW_NUMBER() OVER (PARTITION BY AltSorgu.Ad,AltSorgu.Soyad ORDER BY AltSorgu.CalisanID) AS rn
    FROM (
        SELECT t1.CalisanID
			  ,t1.Ad
			  ,t1.Soyad
			  ,t2.BolumAdi
        FROM Calisanlar t1
        INNER  JOIN Bolumler t2 ON t1.BolumID = t2.BolumID
    ) AS AltSorgu
)
SELECT CalisanID
	  ,Ad
	  ,Soyad
	  ,BolumAdi
	  ,rn
FROM CTE
WHERE rn = 1
ORDER BY CalisanID ASC</code></pre>
<p>Yukarıdaki kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.</p>
<p><img fetchpriority="high" decoding="async" class="size-full wp-image-16338" src="https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-1.jpg" alt="" width="700" height="444" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-1.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-1-473x300.jpg 473w, https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-1-315x200.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-1-213x135.jpg 213w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Görüldüğü üzere ilişkili tablolarda yinelenen satırlar kaldırılmış oldu.</p>
<p><span class="HwtZe" lang="tr"><span class="jCAhz ChMk0b"><span class="ryNqvb">Başka bir seçenek de, GROUP BY ifadesini kullanarak yinelenen değerleri kaldırmaktır.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">GROUP BY deyimi, aynı değerlere sahip satırları özet satırları halinde gruplandırır.</span></span></span></p>
<pre class="line-numbers"><code class="language-sql">SELECT t1.Ad,
       t1.Soyad,
       t2.BolumAdi
FROM Calisanlar t1
    INNER JOIN Bolumler t2
        ON t1.BolumID = t2.BolumID
GROUP BY t1.Ad,
         t1.Soyad,
         t2.BolumAdi;</code></pre>
<p>Yukarıdaki kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.</p>
<p><img decoding="async" class="size-full wp-image-16339" src="https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-2.jpg" alt="" width="700" height="529" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-2.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-2-397x300.jpg 397w, https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-2-315x238.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2023/05/sql-serverda-iliskili-tablolarda-distinct-kullanmadan-yinelenen-degerleri-kaldirmak-2-179x135.jpg 179w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p><iframe title="SQL Server&#039;da İlişkili Tablolarda DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak" width="739" height="416" src="https://www.youtube.com/embed/WsaJXgLJ8n8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Görüldüğü üzere ilişkili tablolarda yinelenen satırlar tekrar kaldırılmış oldu.</p>
<p>Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 223</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
