{"id":15949,"date":"2024-07-22T21:26:37","date_gmt":"2024-07-22T17:56:37","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=15949"},"modified":"2024-08-14T20:32:31","modified_gmt":"2024-08-14T17:02:31","slug":"how-to-use-joins-in-sql","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/how-to-use-joins-in-sql\/","title":{"rendered":"SQL&#039;de Birle\u015ftirmeler Nas\u0131l Kullan\u0131l\u0131r"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">girii\u015f<\/h2>\n<p>Bir\u00e7ok veritaban\u0131 tasar\u0131m\u0131, bilgileri belirli veri noktalar\u0131 aras\u0131ndaki ili\u015fkilere g\u00f6re farkl\u0131 tablolara ay\u0131r\u0131r. Bu gibi durumlarda bile, bazen birinin ayn\u0131 anda birden fazla tablodan bilgi almak istemesi muhtemeldir.<\/p>\n<p>Yap\u0131land\u0131r\u0131lm\u0131\u015f Sorgu Dili (SQL) i\u015fleminde birden fazla tablodan verilere eri\u015fmenin yayg\u0131n bir yolu, tablolar\u0131 bir JOIN ifadesiyle birle\u015ftirmektir. \u0130li\u015fkisel cebirdeki birle\u015ftirme i\u015flemine dayanan bir JOIN ifadesi, her tablodaki birbiriyle ili\u015fkili sat\u0131rlar\u0131 e\u015fle\u015ftirerek ayr\u0131 tablolar\u0131 birle\u015ftirir. Genellikle bu ili\u015fki, bir tablonun yabanc\u0131 anahtar\u0131 ve yabanc\u0131 anahtar\u0131n ba\u015fvurdu\u011fu ba\u015fka bir tablonun birincil anahtar\u0131 gibi de\u011ferleri payla\u015fan, her tablodan birer s\u00fctun olmak \u00fczere bir \u00e7ift s\u00fctuna dayan\u0131r.<\/p>\n<p>Bu k\u0131lavuz, JOIN ifadesi i\u00e7eren \u00e7e\u015fitli SQL sorgular\u0131n\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 a\u00e7\u0131klamaktad\u0131r. Ayr\u0131ca, farkl\u0131 JOIN ifadesi t\u00fcrlerini, birden fazla tablodan verilerin nas\u0131l birle\u015ftirilece\u011fini ve JOIN i\u015flemlerini yazmay\u0131 daha az s\u0131k\u0131c\u0131 hale getirmek i\u00e7in s\u00fctunlara nas\u0131l takma ad verilece\u011fini de g\u00f6stermektedir.<\/p>\n<h5 id=\"%d9%be%db%8c%d8%b4-%d9%86%db%8c%d8%a7%d8%b2%d9%87%d8%a7\">\u00d6n ko\u015fullar<\/h5>\n<p>Bu k\u0131lavuzu takip etmek i\u00e7in, SQL kullanan bir t\u00fcr ili\u015fkisel veritaban\u0131 y\u00f6netim sistemine (RDBMS) sahip bir bilgisayara ihtiyac\u0131n\u0131z olacak. Bu k\u0131lavuzdaki talimatlar ve \u00f6rnekler a\u015fa\u011f\u0131daki ortam kullan\u0131larak do\u011frulanm\u0131\u015ft\u0131r:<\/p>\n<ul>\n<li>Y\u00f6netici ayr\u0131cal\u0131klar\u0131na sahip k\u00f6k olmayan bir kullan\u0131c\u0131 ve UFW ile yap\u0131land\u0131r\u0131lm\u0131\u015f bir g\u00fcvenlik duvar\u0131 bulunan Ubuntu 20.04 \u00e7al\u0131\u015ft\u0131ran bir sunucu<\/li>\n<li>Sunucuda MySQL kurulu ve g\u00fcvenlidir.<\/li>\n<li>Ayr\u0131ca, JOIN i\u015flemlerini pratik yapmak i\u00e7in kullanabilece\u011finiz \u00f6rnek verilerle y\u00fckl\u00fc baz\u0131 tablolar\u0131n bulundu\u011fu bir veritaban\u0131na da ihtiyac\u0131n\u0131z olacak. MySQL sunucusuna nas\u0131l ba\u011flanaca\u011f\u0131n\u0131z ve bu k\u0131lavuzdaki \u00f6rneklerde kullan\u0131lan test veritaban\u0131n\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z hakk\u0131nda ayr\u0131nt\u0131l\u0131 bilgi i\u00e7in a\u015fa\u011f\u0131daki MySQL&#039;e Ba\u011flanma ve \u00d6rnek Veritaban\u0131 Olu\u015fturma b\u00f6l\u00fcm\u00fcn\u00fc takip etmenizi \u00f6neririz.<\/li>\n<\/ul>\n<h5 id=\"%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%a8%d9%87-mysql-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%db%8c%da%a9-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-%d9%86%d9%85\">MySQL&#039;e ba\u011flanma ve \u00f6rnek bir veritaban\u0131 kurma<\/h5>\n<p>SQL veritaban\u0131 sisteminiz uzak bir sunucuda \u00e7al\u0131\u015f\u0131yorsa, yerel makinenizden sunucunuza SSH ile ba\u011flan\u0131n:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>ssh sammy@your_server_ip\r\n<\/code><\/pre>\n<\/div>\n<p>Daha sonra MySQL sunucusu istemini a\u00e7\u0131n ve Sami&#039;yi MySQL kullan\u0131c\u0131 ad\u0131n\u0131zla de\u011fi\u015ftirin:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>mysql -u sammy -p\r\n<\/code><\/pre>\n<\/div>\n<p>joinsDB ad\u0131nda bir veritaban\u0131 olu\u015fturun:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE DATABASE joinsDB;\r\n<\/code><\/pre>\n<\/div>\n<p>Veritaban\u0131 ba\u015far\u0131yla olu\u015fturulduysa a\u015fa\u011f\u0131daki \u00e7\u0131kt\u0131y\u0131 alacaks\u0131n\u0131z:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 1 row affected (0.01 sec)<\/code><\/pre>\n<\/div>\n<p>joinsDB veritaban\u0131n\u0131 se\u00e7mek i\u00e7in a\u015fa\u011f\u0131daki USE ifadesini \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>USE joinsDB;<\/code><\/pre>\n<\/div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nDatabase changed<\/code><\/pre>\n<\/div>\n<p>joinsDB&#039;yi se\u00e7tikten sonra, i\u00e7inde birka\u00e7 tablo olu\u015fturun. Bu k\u0131lavuzda kullan\u0131lan \u00f6rnekler i\u00e7in, bir fabrika i\u015fletti\u011finizi ve \u00fcretim hatt\u0131n\u0131z, sat\u0131\u015f ekibinizdeki \u00e7al\u0131\u015fanlar ve \u015firketinizin sat\u0131\u015flar\u0131 hakk\u0131ndaki bilgileri bir SQL veritaban\u0131nda takip etmeye karar verdi\u011finizi varsayal\u0131m. \u0130lkinde \u00fcr\u00fcnlerinizle ilgili bilgilerin depolanaca\u011f\u0131 \u00fc\u00e7 tabloyla ba\u015flayacaks\u0131n\u0131z. Bu ilk tablonun \u00fc\u00e7 s\u00fctuna ihtiyac\u0131 oldu\u011funa karar veriyorsunuz:<\/p>\n<ul>\n<li>\u00dcr\u00fcn Kimli\u011fi: Her \u00fcr\u00fcn\u00fcn int veri t\u00fcr\u00fcnde ifade edilen kimlik numaras\u0131. Bu s\u00fctun, tablonun birincil anahtar\u0131 g\u00f6revi g\u00f6r\u00fcr; yani her de\u011fer, ilgili sat\u0131r i\u00e7in benzersiz bir tan\u0131mlay\u0131c\u0131 g\u00f6revi g\u00f6r\u00fcr. Birincil anahtardaki her de\u011fer benzersiz olmas\u0131 gerekti\u011finden, bu s\u00fctuna bir UNIQUE k\u0131s\u0131tlamas\u0131 da uygulan\u0131r.<\/li>\n<li>productName: Her bir \u00fcr\u00fcn\u00fcn ad\u0131, en fazla 20 karakter uzunlu\u011funda olan varchar veri tipi kullan\u0131larak ifade edilir.<\/li>\n<li>Fiyat: Her \u00fcr\u00fcn\u00fcn ondal\u0131k veri t\u00fcr\u00fc kullan\u0131larak ifade edilen fiyat\u0131. Bu, bu s\u00fctundaki her de\u011ferin uzunlu\u011funun en fazla d\u00f6rt basamakla s\u0131n\u0131rl\u0131 oldu\u011funu ve bu basamaklardan ikisinin ondal\u0131k noktas\u0131n\u0131n sa\u011f\u0131nda oldu\u011funu belirtir. Dolay\u0131s\u0131yla, bu s\u00fctunda izin verilen de\u011fer aral\u0131\u011f\u0131 -99,99 ile 99,99 aras\u0131ndad\u0131r.<\/li>\n<\/ul>\n<p>\u015eu \u00fc\u00e7 s\u00fctunu i\u00e7eren products adl\u0131 bir tablo olu\u015fturun:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE products (\r\nproductID int UNIQUE,\r\nproductName varchar(20),\r\nprice decimal (4,2),\r\nPRIMARY KEY (productID)\r\n);<\/code><\/pre>\n<\/div>\n<p>\u0130kinci tablo, \u015firketinizin sat\u0131\u015f ekibindeki \u00e7al\u0131\u015fanlar hakk\u0131nda bilgi i\u00e7eriyor. Bu tablonun da \u00fc\u00e7 s\u00fctuna ihtiyac\u0131 oldu\u011funa karar veriyorsunuz:<\/p>\n<ul>\n<li>empID: productID s\u00fctununa benzer \u015fekilde, bu s\u00fctun da sat\u0131\u015f ekibindeki her \u00e7al\u0131\u015fan i\u00e7in int veri t\u00fcr\u00fcyle ifade edilen benzersiz bir kimlik numaras\u0131 i\u00e7erir. Bu nedenle, bu s\u00fctun UNIQUE k\u0131s\u0131tlamas\u0131na sahip olacak ve ekip tablosunun birincil anahtar\u0131 olarak i\u015flev g\u00f6recektir.<\/li>\n<li>empName: Her sat\u0131\u015f eleman\u0131n\u0131n varchar veri t\u00fcr\u00fc kullan\u0131larak ifade edilen ve en fazla 20 karakterden olu\u015fan ad\u0131.<\/li>\n<li>productSpecialty: Sat\u0131\u015f ekibinizin her \u00fcyesine uzmanl\u0131k alan\u0131 olarak bir \u00fcr\u00fcn atan\u0131r. \u015eirketinizin \u00fcretti\u011fi herhangi bir \u00fcr\u00fcn\u00fc satabilirler, ancak genel olarak odakland\u0131klar\u0131 \u00fcr\u00fcn \u00fczerindedirler. Bunu tabloda g\u00f6stermek i\u00e7in, her \u00e7al\u0131\u015fan\u0131n uzmanla\u015ft\u0131\u011f\u0131 her \u00fcr\u00fcn\u00fcn productID de\u011ferini i\u00e7eren bu s\u00fctunu olu\u015fturun.<\/li>\n<\/ul>\n<p>productSpecialty s\u00fctununun yaln\u0131zca ge\u00e7erli \u00fcr\u00fcn kimlik numaralar\u0131n\u0131 temsil eden de\u011ferler i\u00e7ermesini sa\u011flamak i\u00e7in, Products tablosunun productID s\u00fctununa ba\u015fvuran s\u00fctuna bir yabanc\u0131 anahtar k\u0131s\u0131tlamas\u0131 uygulamaya karar verirsiniz. Yabanc\u0131 anahtar k\u0131s\u0131tlamas\u0131, uyguland\u0131\u011f\u0131 s\u00fctundaki de\u011ferlerin ba\u015fvurdu\u011fu s\u00fctunda da bulunmas\u0131n\u0131 zorunlu k\u0131larak iki tablo aras\u0131ndaki ili\u015fkiyi ifade etmenin bir yoludur. A\u015fa\u011f\u0131daki CREATE TABLE ifadesinde, FOREIGN KEY k\u0131s\u0131tlamas\u0131, ekip tablosundaki productSpecialty s\u00fctununa eklenen herhangi bir de\u011ferin Products tablosunun productID s\u00fctununda da bulunmas\u0131n\u0131 gerektirir.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00fc\u00e7 s\u00fctundan olu\u015fan Tak\u0131m ad\u0131nda bir tablo olu\u015fturun:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE team (\r\nempID int UNIQUE,\r\nempName varchar(20),\r\nproductSpecialty int,\r\nPRIMARY KEY (empID),\r\nFOREIGN KEY (productSpecialty) REFERENCES products (productID)\r\n);\r\n<\/code><\/pre>\n<\/div>\n<p>Olu\u015fturaca\u011f\u0131n\u0131z son tablo, \u015firketin sat\u0131\u015f kay\u0131tlar\u0131n\u0131 i\u00e7erecektir. Bu tabloda d\u00f6rt s\u00fctun bulunur:<\/p>\n<ul>\n<li>saleID: productID ve empID s\u00fctunlar\u0131na benzer \u015fekilde, bu s\u00fctun her sat\u0131\u015f i\u00e7in int veri t\u00fcr\u00fc olarak ifade edilen benzersiz bir kimlik numaras\u0131 i\u00e7erir. Bu s\u00fctun ayr\u0131ca sat\u0131\u015f tablosunun birincil anahtar\u0131 olarak i\u015flev g\u00f6rebilmesi i\u00e7in bir UNIQUE k\u0131s\u0131tlamas\u0131na sahiptir.<\/li>\n<li>Miktar: Sat\u0131lan her \u00fcr\u00fcn\u00fcn adet say\u0131s\u0131 int veri tipiyle ifade edilir.<\/li>\n<li>\u00dcr\u00fcn Kimli\u011fi: Sat\u0131lan \u00fcr\u00fcn\u00fcn tam say\u0131 olarak ifade edilen kimlik numaras\u0131.<\/li>\n<li>Sat\u0131\u015f Eleman\u0131: Sat\u0131\u015f\u0131 ger\u00e7ekle\u015ftiren \u00e7al\u0131\u015fan\u0131n kimlik numaras\u0131.<\/li>\n<\/ul>\n<p>Tak\u0131m tablosundaki productSpecialty s\u00fctununda oldu\u011fu gibi, hem productID hem de salesperson s\u00fctunlar\u0131na FOREIGN KEY k\u0131s\u0131tlamalar\u0131 uygulamaya karar verirsiniz. Bu, bu s\u00fctunlar\u0131n yaln\u0131zca products tablosunun productID s\u00fctununda ve team tablosunun empID s\u00fctunlar\u0131nda bulunan de\u011ferleri i\u00e7ermesini sa\u011flar.<\/p>\n<p>A\u015fa\u011f\u0131daki d\u00f6rt s\u00fctundan olu\u015fan Sat\u0131\u015flar ad\u0131nda bir tablo olu\u015fturun:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE sales (\r\nsaleID int UNIQUE,\r\nquantity int,\r\nproductID int,\r\nsalesperson int,\r\nPRIMARY KEY (saleID),\r\nFOREIGN KEY (productID) REFERENCES products (productID),\r\nFOREIGN KEY (salesperson) REFERENCES team (empID)\r\n);<\/code><\/pre>\n<\/div>\n<p>Daha sonra a\u015fa\u011f\u0131daki INSERT INTO i\u015flemini y\u00fcr\u00fcterek Products tablosunu \u00f6rnek verilerle y\u00fckleyin:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO products\r\nVALUES\r\n(1, 'widget', 18.99),\r\n(2, 'gizmo', 14.49),\r\n(3, 'thingamajig', 39.99),\r\n(4, 'doodad', 11.50),\r\n(5, 'whatzit', 29.99);<\/code><\/pre>\n<\/div>\n<p>Daha sonra tak\u0131m tablosunu \u00f6rnek verilerle y\u00fckleyin:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO team\r\nVALUES\r\n(1, 'Florence', 1),\r\n(2, 'Mary', 4),\r\n(3, 'Diana', 3),\r\n(4, 'Betty', 2);<\/code><\/pre>\n<\/div>\n<p>Sat\u0131\u015f tablosunu \u00f6rnek verilerle de y\u00fckleyin:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO sales\r\nVALUES\r\n(1, 7, 1, 1),\r\n(2, 10, 5, 4),\r\n(3, 8, 2, 4),\r\n(4, 1, 3, 3),\r\n(5, 5, 1, 3);<\/code><\/pre>\n<\/div>\n<p>Son olarak, \u015firketinizin sat\u0131\u015f ekibinizden hi\u00e7 kimsenin kat\u0131l\u0131m\u0131 olmadan birka\u00e7 sat\u0131\u015f yapt\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu sat\u0131\u015flar\u0131 kaydetmek i\u00e7in, Sat\u0131\u015f Eleman\u0131 s\u00fctununda de\u011feri olmayan \u00fc\u00e7 sat\u0131r\u0131 Sat\u0131\u015f tablosuna eklemek \u00fczere a\u015fa\u011f\u0131daki i\u015flemi \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO sales (saleID, quantity, productID)\r\nVALUES\r\n(6, 1, 5),\r\n(7, 3, 1),\r\n(8, 4, 5);<\/code><\/pre>\n<\/div>\n<p>Bunu yapt\u0131ktan sonra, k\u0131lavuzun geri kalan\u0131n\u0131 takip etmeye ve SQL&#039;de tablolar\u0131 nas\u0131l birle\u015ftirece\u011finizi \u00f6\u011frenmeye haz\u0131rs\u0131n\u0131z.<\/p>\n<h5 id=\"%d8%af%d8%b1%da%a9-%d9%86%d8%ad%d9%88-%d8%b9%d9%85%d9%84%db%8c%d8%a7%d8%aa-join\">JOIN i\u015fleminin s\u00f6zdizimini anlama<\/h5>\n<p>JOIN ifadeleri, UPDATE ve DELETE i\u015flemleri de dahil olmak \u00fczere \u00e7e\u015fitli SQL ifadelerinde kullan\u0131labilir. Ancak, bu k\u0131lavuzdaki \u00f6rnekler, a\u00e7\u0131klay\u0131c\u0131 olmas\u0131 a\u00e7\u0131s\u0131ndan, JOIN ifadelerinin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6stermek i\u00e7in SELECT sorgular\u0131n\u0131 kullan\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, JOIN ifadesini i\u00e7eren bir SELECT ifadesinin genel s\u00f6zdizimini g\u00f6stermektedir:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT table1.column1, table2.column2\r\nFROM table1 JOIN table2\r\nON search_condition;<\/code><\/pre>\n<\/div>\n<p>Bu s\u00f6zdizimi, iki ayr\u0131 tablodan iki s\u00fctun d\u00f6nd\u00fcren bir SELECT ifadesiyle ba\u015flar. JOIN ifadeleri birden fazla tablonun i\u00e7eri\u011fini kar\u015f\u0131la\u015ft\u0131rd\u0131\u011f\u0131ndan, bu \u00f6rnek s\u00f6zdizimi her s\u00fctunun hangi tablodan se\u00e7ilece\u011fini belirtir ve s\u00fctun ad\u0131ndan \u00f6nce tablo ad\u0131n\u0131 ve bir nokta i\u015fareti koyar. Bu, tam nitelikli s\u00fctun referans\u0131 olarak bilinir.<\/p>\n<p>Bunlar gibi tam nitelikli s\u00fctun referanslar\u0131n\u0131 herhangi bir i\u015flemde kullanabilirsiniz, ancak teknik olarak bu yaln\u0131zca farkl\u0131 tablolardaki iki s\u00fctunun ayn\u0131 ada sahip oldu\u011fu i\u015flemlerde gereklidir. Ancak, birden fazla tabloyla \u00e7al\u0131\u015f\u0131rken bunlar\u0131 kullanmak iyi bir uygulamad\u0131r, \u00e7\u00fcnk\u00fc JOIN i\u015flemlerinin okunabilirli\u011fini ve anla\u015f\u0131lmas\u0131n\u0131 kolayla\u015ft\u0131rabilirler.<\/p>\n<p>SELECT ifadesinden sonra FROM ifadesi gelir. Herhangi bir sorguda, FROM ifadesi, istedi\u011finiz verileri d\u00f6nd\u00fcrmek i\u00e7in aranmas\u0131 gereken veri k\u00fcmesini tan\u0131mlad\u0131\u011f\u0131n\u0131z yerdir. Buradaki tek fark, FROM ifadesinin JOIN anahtar s\u00f6zc\u00fc\u011f\u00fcyle ayr\u0131lm\u0131\u015f iki tablodan olu\u015fmas\u0131d\u0131r. Sorgu yazmay\u0131 d\u00fc\u015f\u00fcnmenin faydal\u0131 bir yolu, sorgulamak istedi\u011finiz tablodan d\u00f6nd\u00fcr\u00fclecek s\u00fctunlar\u0131 se\u00e7meyi unutmamakt\u0131r.<\/p>\n<p>Ard\u0131ndan, sorgunun iki tabloyu bir arama ko\u015fulu tan\u0131mlayarak nas\u0131l birle\u015ftirmesi gerekti\u011fini a\u00e7\u0131klayan bir ON ifadesi bulunur. Bir arama ko\u015fulu, belirli bir ko\u015ful i\u00e7in &quot;do\u011fru&quot;, &quot;yanl\u0131\u015f&quot; veya &quot;bilinmiyor&quot; olarak de\u011ferlendirilebilen bir veya daha fazla ifade veya ifadeden olu\u015fan bir k\u00fcmedir. JOIN i\u015flemini, her iki tablodaki t\u00fcm sat\u0131rlar\u0131 birle\u015ftirmek ve ard\u0131ndan ON ifadesindeki arama ko\u015fulunun &quot;do\u011fru&quot; olarak de\u011ferlendirildi\u011fi t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcrmek olarak d\u00fc\u015f\u00fcnmek faydal\u0131 olabilir.<\/p>\n<p>Bir ON ifadesine, genellikle iki ili\u015fkili s\u00fctunun (\u00f6rne\u011fin, bir tablonun yabanc\u0131 anahtar\u0131 ve yabanc\u0131 anahtar\u0131n referans verdi\u011fi ba\u015fka bir tablonun birincil anahtar\u0131) e\u015fit de\u011ferlere sahip olup olmad\u0131\u011f\u0131n\u0131 test eden bir arama ko\u015fulu eklemek mant\u0131kl\u0131d\u0131r. Bu bazen e\u015fit birle\u015ftirme olarak adland\u0131r\u0131l\u0131r.<\/p>\n<p>Equi&#039;nin birden fazla tablodan e\u015fle\u015fen verileri nas\u0131l birle\u015ftirebilece\u011fine dair bir \u00f6rnek olarak, daha \u00f6nce ekledi\u011finiz \u00f6rnek verileri kullanarak a\u015fa\u011f\u0131daki sorguyu \u00e7al\u0131\u015ft\u0131r\u0131n. Bu sorgu, \u00dcr\u00fcnler ve Ekip tablolar\u0131n\u0131, ilgili productID ve productSpecialty s\u00fctunlar\u0131ndaki e\u015fle\u015fen de\u011ferleri test eden bir arama ko\u015fuluyla birle\u015ftirir. Ard\u0131ndan, her sat\u0131\u015f ekibi \u00fcyesinin ad\u0131n\u0131, uzmanla\u015ft\u0131\u011f\u0131 her \u00fcr\u00fcn\u00fcn ad\u0131n\u0131 ve bu \u00fcr\u00fcnlerin fiyat\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT team.empName, products.productName, products.price\r\nFROM products JOIN team\r\nON products.productID = team.productSpecialty<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u0646\u062a\u0627\u06cc\u062c \u0627\u06cc\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0633\u062a:<\/p>\n<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+----------+-------------+-------+\r\n| empName | productName | price |\r\n+----------+-------------+-------+\r\n| Florence | widget | 18.99 |\r\n| Mary | doodad | 11.50 |\r\n| Diana | thingamajig | 39.99 |\r\n| Betty | gizmo | 14.49 |\r\n+----------+-------------+-------+\r\n4 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>SQL&#039;in bu tablolar\u0131 birle\u015ftirerek bu sonu\u00e7 k\u00fcmesini nas\u0131l olu\u015fturdu\u011funu g\u00f6stermek i\u00e7in, s\u00fcrece daha yak\u0131ndan bakal\u0131m. A\u00e7\u0131k olmak gerekirse, a\u015fa\u011f\u0131dakiler bir veritaban\u0131 y\u00f6netim sisteminin iki tabloyu nas\u0131l birle\u015ftirece\u011fiyle tam olarak \u00f6rt\u00fc\u015fmese de, JOIN i\u015flemini bir prosed\u00fcr olarak d\u00fc\u015f\u00fcnmek faydal\u0131 olabilir.<\/p>\n<p>\u0130lk olarak sorgu, FROM ifadesindeki ilk tabloda yer alan her sat\u0131r ve s\u00fctun i\u00e7in \u00fcr\u00fcnleri yazd\u0131r\u0131r:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>JOIN Process Example\r\n+-----------+-------------+-------+\r\n| productID | productName | price |\r\n+-----------+-------------+-------+\r\n| 1 | widget | 18.99 |\r\n| 2 | gizmo | 14.49 |\r\n| 3 | thingamajig | 39.99 |\r\n| 4 | doodad | 11.50 |\r\n| 5 | whatzit | 29.99 |\r\n+-----------+-------------+-------+<\/code><\/pre>\n<div>\u0633\u067e\u0633\u060c \u0628\u0647 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u062f\u06cc\u0641\u200c\u0647\u0627 \u0646\u06af\u0627\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0627 \u0647\u0631 \u0631\u062f\u06cc\u0641\u06cc \u0627\u0632 \u062c\u062f\u0648\u0644 \u062a\u06cc\u0645 \u06a9\u0647 productSpecialty \u0622\u0646 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 productID \u062f\u0631 \u0622\u0646 \u0633\u0637\u0631 \u0627\u0633\u062a\u060c \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc\u200c\u062f\u0647\u062f:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>JOIN Process Example\r\n+-----------+-------------+-------+-------+----------+------------------+\r\n| productID | productName | price | empID | empName | productSpecialty |\r\n+-----------+-------------+-------+-------+----------+------------------+\r\n| 1 | widget | 18.99 | 1 | Florence | 1 |\r\n| 2 | gizmo | 14.49 | 4 | Betty | 2 |\r\n| 3 | thingamajig | 39.99 | 3 | Diana | 3 |\r\n| 4 | doodad | 11.50 | 2 | Mary | 4 |\r\n| 5 | whatzit | 29.99 | | | |\r\n+-----------+-------------+-------+-------+----------+------------------+<\/code><\/pre>\n<div>\u0633\u067e\u0633\u060c \u0633\u0637\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u0646\u062f \u0631\u0627 \u0628\u0631\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0633\u062a\u0648\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0631\u062a\u06cc\u0628 \u0622\u0646\u0647\u0627 \u062f\u0631 \u0639\u0628\u0627\u0631\u062a SELECT \u0645\u0631\u062a\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0633\u062a\u0648\u0646\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f\u0646\u062f \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0631\u062f\u06cc\u0641\u200c\u0647\u0627 \u0631\u0627 \u0645\u062a\u0648\u0633\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u0646\u062a\u0627\u06cc\u062c \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>JOIN Process Example\r\n+----------+-------------+-------+\r\n| empName | productName | price |\r\n+----------+-------------+-------+\r\n| Florence | widget | 18.99 |\r\n| Mary | doodad | 11.50 |\r\n| Diana | thingamajig | 39.99 |\r\n| Betty | gizmo | 14.49 |\r\n+----------+-------------+-------+\r\n4 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>Tablolar\u0131 birle\u015ftirmenin en yayg\u0131n yolu equi birle\u015ftirmeleridir, ancak &lt;, &gt;, LIKE, NOT LIKE ve hatta BETWEEN gibi di\u011fer SQL operat\u00f6rleri de ON arama ko\u015fullar\u0131nda kullan\u0131labilir. Ancak, daha karma\u015f\u0131k arama ko\u015fullar\u0131n\u0131n kullan\u0131lmas\u0131n\u0131n sonu\u00e7 k\u00fcmesinde hangi verilerin g\u00f6r\u00fcnece\u011fini tahmin etmeyi zorla\u015ft\u0131rabilece\u011fini unutmay\u0131n.<\/p>\n<p>\u00c7o\u011fu uygulamada, SQL standard\u0131n\u0131n &quot;nitelikli JOIN&quot; veri t\u00fcr\u00fc olarak adland\u0131rd\u0131\u011f\u0131 herhangi bir s\u00fctun k\u00fcmesiyle tablolar\u0131 birle\u015ftirebilirsiniz. Bu, genel olarak, say\u0131sal veri tutan bir s\u00fctunu, ilgili veri t\u00fcrlerinden ba\u011f\u0131ms\u0131z olarak, say\u0131sal veri tutan herhangi bir s\u00fctuna ba\u011flayabilece\u011finiz anlam\u0131na gelir. Benzer \u015fekilde, genellikle karakter de\u011ferleri tutan herhangi bir s\u00fctunu, karakter verileri tutan herhangi bir s\u00fctuna ba\u011flayabilirsiniz. Daha \u00f6nce de belirtildi\u011fi gibi, iki tabloyu birle\u015ftirmek i\u00e7in e\u015fle\u015ftirdi\u011finiz s\u00fctunlar genellikle tablolar aras\u0131ndaki bir ili\u015fkiyi temsil eden s\u00fctunlard\u0131r; \u00f6rne\u011fin, bir yabanc\u0131 anahtar ve ba\u015fvurdu\u011fu ba\u015fka bir tablonun birincil anahtar\u0131.<\/p>\n<p>Bir\u00e7ok SQL uygulamas\u0131, ayn\u0131 ada sahip s\u00fctunlar\u0131 ON yerine USING anahtar s\u00f6zc\u00fc\u011f\u00fcyle birle\u015ftirmenize olanak tan\u0131r. Bu t\u00fcr bir i\u015flemin s\u00f6zdizimi \u015f\u00f6yle olabilir:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT table1.column1, table2.column2\r\nFROM table1 JOIN table2\r\nUSING (related_column);<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>Bu \u00f6rnek s\u00f6zdiziminde, USING ifadesi ON table1.related_column = table2.related_column; ile e\u015fde\u011ferdir.<\/p>\n<p>Sat\u0131\u015flar ve \u00fcr\u00fcnlerin her birinin productID adl\u0131 bir s\u00fctunu oldu\u011fundan, bu s\u00fctunlar\u0131 USING anahtar s\u00f6zc\u00fc\u011f\u00fcyle e\u015fle\u015ftirerek birle\u015ftirebilirsiniz. A\u015fa\u011f\u0131daki ifade bunu yapar ve her sat\u0131\u015f\u0131n saleID de\u011ferini, sat\u0131lan birim say\u0131s\u0131n\u0131, sat\u0131lan her \u00fcr\u00fcn\u00fcn ad\u0131n\u0131 ve fiyat\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. Ayr\u0131ca, sonu\u00e7 k\u00fcmesini saleID de\u011ferine g\u00f6re artan s\u0131rada s\u0131ralar:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>SELECT sales.saleID, sales.quantity, products.productName, products.price\r\nFROM sales JOIN products\r\nUSING (productID)\r\nORDER BY saleID;<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+--------+----------+-------------+-------+\r\n| saleID | quantity | productName | price |\r\n+--------+----------+-------------+-------+\r\n| 1 | 7 | widget | 18.99 |\r\n| 2 | 10 | whatzit | 29.99 |\r\n| 3 | 8 | gizmo | 14.49 |\r\n| 4 | 1 | thingamajig | 39.99 |\r\n| 5 | 5 | widget | 18.99 |\r\n| 6 | 1 | whatzit | 29.99 |\r\n| 7 | 3 | widget | 18.99 |\r\n| 8 | 4 | whatzit | 29.99 |\r\n+--------+----------+-------------+-------+\r\n8 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>Tablolar\u0131 birle\u015ftirirken, veritaban\u0131 sistemi bazen sat\u0131rlar\u0131 tahmin edilmesi kolay olmayan \u015fekillerde d\u00fczenler. Bunun gibi bir ORDER BY ifadesi eklemek, sonu\u00e7 k\u00fcmelerinin daha tutarl\u0131 ve okunabilir olmas\u0131na yard\u0131mc\u0131 olabilir.<\/p>\n<h5 id=\"%d9%be%db%8c%d9%88%d8%b3%d8%aa%d9%86-%d8%a8%d9%87-%d8%a8%db%8c%d8%b4-%d8%a7%d8%b2-%d8%af%d9%88-%d8%ac%d8%af%d9%88%d9%84\">\u0130kiden fazla tabloyu birle\u015ftirme<\/h5>\n<p>\u0130kiden fazla tablodan veri birle\u015ftirmeniz gereken zamanlar olabilir. JOIN ifadelerini di\u011fer JOIN ifadelerinin i\u00e7ine yerle\u015ftirerek istedi\u011finiz say\u0131da tabloyu birle\u015ftirebilirsiniz. A\u015fa\u011f\u0131daki s\u00f6zdizimi, \u00fc\u00e7 tabloyu birle\u015ftirmenin nas\u0131l g\u00f6r\u00fcnece\u011fine dair bir \u00f6rnektir:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT table1.column1, table2.column2, table3.column3\r\nFROM table1 JOIN table2\r\nON table1.related_column = table2.related_column\r\nJOIN table3\r\nON table3.related_column = table1_or_2.related_column;<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>Bu \u00f6rnek ifadedeki FROM ifadesi, tablo 1&#039;i tablo 2&#039;ye birle\u015ftirerek ba\u015flar. Bu ON ifadesinden sonra, birle\u015ftirilmi\u015f tablolar\u0131n ilk k\u00fcmesini tablo 3 ile birle\u015ftiren ikinci bir JOIN ba\u015flat\u0131r. \u00dc\u00e7\u00fcnc\u00fc tablonun, birinci veya ikinci tablodaki bir s\u00fctuna birle\u015ftirilebilece\u011fini unutmay\u0131n.<\/p>\n<p>\u00d6rne\u011fin, \u00e7al\u0131\u015fan\u0131n\u0131z\u0131n sat\u0131\u015flar\u0131ndan ne kadar gelir elde etti\u011fini bilmek istedi\u011finizi varsayal\u0131m, ancak yaln\u0131zca \u00e7al\u0131\u015fan\u0131n uzmanla\u015ft\u0131\u011f\u0131 bir \u00fcr\u00fcn\u00fcn sat\u0131\u015flar\u0131n\u0131 i\u00e7eren sat\u0131\u015f kay\u0131tlar\u0131yla ilgileniyorsunuz.<\/p>\n<p>Bu bilgiyi elde etmek i\u00e7in a\u015fa\u011f\u0131daki sorguyu \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu sorgu, \u00dcr\u00fcnler ve Sat\u0131\u015f tablolar\u0131n\u0131 ilgili productID s\u00fctunlar\u0131yla e\u015fle\u015ftirerek birle\u015ftirerek ba\u015flar. Ard\u0131ndan, ilk JOIN sat\u0131r\u0131ndaki her sat\u0131r\u0131 productSpecialty s\u00fctunuyla e\u015fle\u015ftirerek Ekip tablosunu ilk iki tabloyla birle\u015ftirir. Sorgu daha sonra, e\u015fle\u015fen \u00e7al\u0131\u015fan\u0131n ayn\u0131 zamanda sat\u0131\u015f\u0131 yapan ki\u015fi oldu\u011fu sat\u0131rlar\u0131 d\u00f6nd\u00fcrmek i\u00e7in sonu\u00e7lar\u0131 bir WHERE ifadesiyle filtreler. Sorgu ayr\u0131ca, sat\u0131\u015fID s\u00fctunundaki de\u011fere g\u00f6re nihai sonu\u00e7lar\u0131 artan s\u0131rada s\u0131ralayan bir ORDER BY ifadesi de i\u00e7erir:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT sales.saleID,\r\nteam.empName,\r\nproducts.productName,\r\n(sales.quantity * products.price)\r\nFROM products JOIN sales\r\nUSING (productID)\r\nJOIN team\r\nON team.productSpecialty = sales.productID\r\nWHERE team.empID = sales.salesperson\r\nORDER BY sales.saleID;\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<div>SELECT ifadesinde listelenen s\u00fctunlar aras\u0131nda, Sat\u0131\u015flar tablosunun De\u011fer s\u00fctunundaki de\u011ferleri \u00dcr\u00fcnler tablosundaki Fiyat de\u011ferleriyle \u00e7arpan bir ifadenin bulundu\u011funu unutmay\u0131n. \u00dcr\u00fcnler, e\u015fle\u015fen sat\u0131rlarda \u015fu de\u011ferleri d\u00f6nd\u00fcr\u00fcr:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+--------+----------+-------------+-----------------------------------+\r\n| saleID | empName | productName | (sales.quantity * products.price) |\r\n+--------+----------+-------------+-----------------------------------+\r\n| 1 | Florence | widget | 132.93 |\r\n| 3 | Betty | gizmo | 115.92 |\r\n| 4 | Diana | thingamajig | 39.99 |\r\n+--------+----------+-------------+-----------------------------------+\r\n3 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>\u015eimdiye kadarki t\u00fcm \u00f6rneklerde tek bir JOIN ifadesi t\u00fcr\u00fc vard\u0131: i\u00e7 JOIN. \u0130\u00e7 birle\u015ftirmeler, d\u0131\u015f birle\u015ftirmeler ve aralar\u0131ndaki farklara genel bir bak\u0131\u015f i\u00e7in bir sonraki b\u00f6l\u00fcm\u00fc okumaya devam edin.<\/p>\n<h2 id=\"%d8%b9%d9%85%d9%84%db%8c%d8%a7%d8%aa-join-%d8%af%d8%a7%d8%ae%d9%84%db%8c-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-%d8%a8%db%8c%d8%b1%d9%88%d9%86%db%8c\">\u0130\u00e7 ve d\u0131\u015f JOIN i\u015flemleri<\/h2>\n<p>\u0130ki ana JOIN ifadesi t\u00fcr\u00fc vard\u0131r: INNER birle\u015ftirmeler ve OUTER birle\u015ftirmeler. Bu iki birle\u015ftirme t\u00fcr\u00fc aras\u0131ndaki fark, d\u00f6nd\u00fcrd\u00fckleri verilerdir. \u0130\u00e7 birle\u015ftirmeler, birle\u015ftirilen her tablodan yaln\u0131zca e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcrken, OUTER birle\u015ftirmeler hem e\u015fle\u015fen hem de e\u015fle\u015fmeyen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>\u00d6nceki b\u00f6l\u00fcmlerdeki s\u00f6zdizimi ve \u00f6rnek sorgular\u0131n t\u00fcm\u00fc, INNER anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fc i\u00e7ermese de INNER JOIN ifadelerini kullan\u0131r. \u00c7o\u011fu SQL uygulamas\u0131, aksi a\u00e7\u0131k\u00e7a belirtilmedik\u00e7e her JOIN ifadesini bir INNER JOIN olarak ele al\u0131r.<\/p>\n<p>D\u0131\u015f JOIN belirten sorgular, birden fazla tabloyu birle\u015ftirir ve e\u015fle\u015fen t\u00fcm sat\u0131rlar\u0131 ve e\u015fle\u015fmeyen t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Bu, eksik de\u011ferlere sahip sat\u0131rlar\u0131 bulmak veya k\u0131smi e\u015fle\u015fmenin kabul edilebilir oldu\u011fu durumlarda yararl\u0131 olabilir.<\/p>\n<p>D\u0131\u015f birle\u015ftirme i\u015flemleri \u00fc\u00e7 t\u00fcre ayr\u0131labilir: LEFT OUTER birle\u015ftirmeleri, RIGHT OUTER birle\u015ftirmeleri ve FULL OUTER birle\u015ftirmeleri. LEFT OUTER birle\u015ftirmeleri veya basit\u00e7e sol birle\u015ftirmeler, birle\u015ftirilmi\u015f iki tablodan e\u015fle\u015fen t\u00fcm sat\u0131rlar\u0131 ve &quot;sol&quot; tablodan e\u015fle\u015fmeyen t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Bir JOIN i\u015flemi ba\u011flam\u0131nda, &quot;sol&quot; tablo her zaman FROM anahtar s\u00f6zc\u00fc\u011f\u00fcnden hemen sonra ve JOIN anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fcn solunda belirtilen ilk tablodur. Benzer \u015fekilde, &quot;sa\u011f&quot; tablo ikinci tablo veya JOIN&#039;den hemen sonra gelen tablodur ve RIGHT OUTER birle\u015ftirmesi, birle\u015ftirilmi\u015f tablolardan e\u015fle\u015fen t\u00fcm sat\u0131rlar\u0131 ve &quot;sa\u011f&quot; tablodan e\u015fle\u015fmeyen t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. FULL OUTER JOIN, her iki tablodan da e\u015fle\u015fmeyen sat\u0131rlar dahil olmak \u00fczere t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>Bu farkl\u0131 JOIN ifadelerinin nas\u0131l veri d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn\u00fc g\u00f6stermek i\u00e7in, \u00f6nceki &quot;\u00d6rnek Bir Veritaban\u0131na Ba\u011flanma ve Kurma&quot; b\u00f6l\u00fcm\u00fcnde olu\u015fturulan tablolarda a\u015fa\u011f\u0131daki \u00f6rnek sorgular\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n. Bu sorgular ayn\u0131d\u0131r, ancak her biri farkl\u0131 bir JOIN ifadesi t\u00fcr\u00fc belirtir.<\/p>\n<p>Bu ilk \u00f6rnek, sat\u0131\u015f ve ekip tablolar\u0131n\u0131, ilgili sat\u0131\u015f eleman\u0131 ve empID s\u00fctunlar\u0131n\u0131 e\u015fle\u015ftirerek birle\u015ftirmek i\u00e7in dahili bir JOIN kullan\u0131r. Yine, INNER anahtar s\u00f6zc\u00fc\u011f\u00fc a\u00e7\u0131k\u00e7a dahil edilmese de ima edilir:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT sales.saleID, sales.quantity, sales.salesperson, team.empName \r\nFROM sales JOIN team\r\nON sales.salesperson = team.empID;<\/code><\/pre>\n<\/div>\n<\/div>\n<div>Bu sorgu bir i\u00e7 JOIN ifadesi kulland\u0131\u011f\u0131ndan, her iki tablodan da yaln\u0131zca e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\">Output\r\n+--------+----------+-------------+----------+\r\n| saleID | quantity | salesperson | empName |\r\n+--------+----------+-------------+----------+\r\n| 1 | 7 | 1 | Florence |\r\n| 4 | 1 | 3 | Diana |\r\n| 5 | 5 | 3 | Diana |\r\n| 2 | 10 | 4 | Betty |\r\n| 3 | 8 | 4 | Betty |\r\n+--------+----------+-------------+----------+\r\n5 rows in set (0.00 sec)<\/pre>\n<\/div>\n<\/div>\n<div>Sorgunun bu s\u00fcr\u00fcm\u00fc bunun yerine LEFT OUTER JOIN ifadesini kullan\u0131r:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT sales.saleID, sales.quantity, sales.salesperson, team.empName\r\nFROM sales LEFT OUTER JOIN team\r\nON sales.salesperson = team.empID;<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\u00d6nceki sorgu gibi, bu sorgu da her iki tablodan e\u015fle\u015fen de\u011ferleri d\u00f6nd\u00fcr\u00fcr. Ancak, &quot;sol&quot; tablodan (bu durumda Sat\u0131\u015flar) &quot;sa\u011f&quot; tabloda (Tak\u0131m) e\u015fle\u015fmeyen t\u00fcm de\u011ferleri d\u00f6nd\u00fcr\u00fcr. Sol tablodaki bu sat\u0131rlar\u0131n sa\u011fda e\u015fle\u015fmesi olmad\u0131\u011f\u0131ndan, e\u015fle\u015fmeyen de\u011ferler NULL olarak d\u00f6nd\u00fcr\u00fcl\u00fcr:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+--------+----------+-------------+----------+\r\n| saleID | quantity | salesperson | empName |\r\n+--------+----------+-------------+----------+\r\n| 1 | 7 | 1 | Florence |\r\n| 2 | 10 | 4 | Betty |\r\n| 3 | 8 | 4 | Betty |\r\n| 4 | 1 | 3 | Diana |\r\n| 5 | 5 | 3 | Diana |\r\n| 6 | 1 | NULL | NULL |\r\n| 7 | 3 | NULL | NULL |\r\n| 8 | 4 | NULL | NULL |\r\n+--------+----------+-------------+----------+\r\n8 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>Sorgunun bir sonraki s\u00fcr\u00fcm\u00fc bunun yerine RIGHT JOIN ifadesini kullan\u0131r:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT sales.saleID, sales.quantity, sales.salesperson, team.empName\r\nFROM sales RIGHT JOIN team\r\nON sales.salesperson = team.empID;<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>Bu sorgunun JOIN ifadesinin RIGHT OUTER JOIN yerine RIGHT JOIN olarak okundu\u011funu unutmay\u0131n. INNER anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fcn bir INNER JOIN ifadesi belirtmek i\u00e7in gerekli olmamas\u0131 gibi, LEFT JOIN veya RIGHT JOIN yazd\u0131\u011f\u0131n\u0131zda da OUTER ifadesi ima edilir.<\/p>\n<p>Bu sorgunun sonucu bir \u00f6ncekinin tam tersidir, \u00e7\u00fcnk\u00fc her iki tablodan da t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr, ancak yaln\u0131zca &quot;sa\u011f&quot; tablodan gelen benzersiz sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+--------+----------+-------------+----------+\r\n| saleID | quantity | salesperson | empName |\r\n+--------+----------+-------------+----------+\r\n| 1 | 7 | 1 | Florence |\r\n| NULL | NULL | NULL | Mary |\r\n| 4 | 1 | 3 | Diana |\r\n| 5 | 5 | 3 | Diana |\r\n| 2 | 10 | 4 | Betty |\r\n| 3 | 8 | 4 | Betty |\r\n+--------+----------+-------------+----------+\r\n6 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>JOIN ifadelerindeki tablo ve s\u00fctun takma adlar\u0131<\/p>\n<p>Uzun veya \u00e7ok a\u00e7\u0131klay\u0131c\u0131 adlara sahip tablolar\u0131 birle\u015ftirirken, birden fazla tam nitelikli s\u00fctun referans\u0131 yazmak s\u0131k\u0131c\u0131 olabilir. Bunu \u00f6nlemek i\u00e7in, kullan\u0131c\u0131lar bazen tablo veya s\u00fctun ad\u0131 i\u00e7in daha k\u0131sa bir takma ad sa\u011flamay\u0131 faydal\u0131 bulabilirler.<\/p>\n<p>Bunu SQL&#039;de, FROM ifadesindeki her tablo tan\u0131m\u0131n\u0131n ard\u0131ndan AS anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fc ve ard\u0131ndan se\u00e7ti\u011finiz takma ad\u0131 kullanarak yapabilirsiniz:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT t1.column1, t2.column2\r\nFROM table1 AS t1 JOIN table2 AS t2\r\nON t1.related_column = t2.related_column;<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>Bu \u00f6rnek s\u00f6zdizimi, FROM ifadesinden \u00f6nce tan\u0131mlanmam\u0131\u015f olsalar bile, SELECT ifadesinde takma adlar kullan\u0131r. Bu, SQL sorgular\u0131nda y\u00fcr\u00fctme s\u0131ras\u0131n\u0131n FROM ifadesiyle ba\u015flamas\u0131 nedeniyle m\u00fcmk\u00fcnd\u00fcr. Bu kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir, ancak sorguyu yazmaya ba\u015flamadan \u00f6nce bunu akl\u0131n\u0131zda tutman\u0131z ve takma adlar hakk\u0131nda d\u00fc\u015f\u00fcnmeniz faydal\u0131d\u0131r.<\/p>\n<p>\u00d6rne\u011fin, Sat\u0131\u015f ve \u00dcr\u00fcnler tablolar\u0131n\u0131 birle\u015ftiren ve bunlara s\u0131ras\u0131yla S ve P takma adlar\u0131n\u0131 sa\u011flayan a\u015fa\u011f\u0131daki sorguyu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT S.saleID, S.quantity,\r\nP.productName,\r\n(P.price * S.quantity) AS revenue \r\nFROM sales AS S JOIN products AS P\r\nUSING (productID);<\/code><\/pre>\n<\/div>\n<\/div>\n<div>Bu \u00f6rne\u011fin, Sat\u0131\u015flar tablosunun Tutar s\u00fctunundaki de\u011ferler ile \u00dcr\u00fcnler tablosunun Fiyat s\u00fctunundaki kar\u015f\u0131l\u0131k gelen de\u011ferlerin \u00e7arp\u0131m\u0131 i\u00e7in Gelir adl\u0131 \u00fc\u00e7\u00fcnc\u00fc bir takma ad olu\u015fturdu\u011funu unutmay\u0131n. Bu, yaln\u0131zca sonu\u00e7 k\u00fcmesindeki s\u00fctun ad\u0131nda belirgindir, ancak a\u015fa\u011f\u0131daki gibi bir takma ad sa\u011flamak, sorgu sonu\u00e7lar\u0131n\u0131n ard\u0131ndaki anlam\u0131 veya amac\u0131 iletmek i\u00e7in faydal\u0131 olabilir:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+--------+----------+-------------+---------+\r\n| saleID | quantity | productName | revenue |\r\n+--------+----------+-------------+---------+\r\n| 1 | 7 | widget | 132.93 |\r\n| 2 | 10 | whatzit | 299.90 |\r\n| 3 | 8 | gizmo | 115.92 |\r\n| 4 | 1 | thingamajig | 39.99 |\r\n| 5 | 5 | widget | 94.95 |\r\n| 6 | 1 | whatzit | 29.99 |\r\n| 7 | 3 | widget | 56.97 |\r\n| 8 | 4 | whatzit | 119.96 |\r\n+--------+----------+-------------+---------+\r\n8 rows in set (0.00 sec)<\/code><\/pre>\n<\/div>\n<\/div>\n<div>Bir takma ad tan\u0131mlarken AS anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fcn teknik olarak iste\u011fe ba\u011fl\u0131 oldu\u011funu unutmay\u0131n. \u00d6nceki \u00f6rnek \u015fu \u015fekilde de yaz\u0131labilir:<\/div>\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT S.saleID, S.quantity, P.productName, (P.price * S.quantity) revenue \r\nFROM sales S JOIN products P\r\nUSING (productID);<\/code><\/pre>\n<\/div>\n<\/div>\n<div>\n<p>AS anahtar s\u00f6zc\u00fc\u011f\u00fc bir takma ad tan\u0131mlamak i\u00e7in gerekli olmasa da, eklenmesi iyi bir uygulama olarak kabul edilir. Bu, sorgunun amac\u0131n\u0131n a\u00e7\u0131k kalmas\u0131na ve okunabilirli\u011finin artmas\u0131na yard\u0131mc\u0131 olabilir.<\/p>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Sonu\u00e7<\/h2>\n<p>Bu k\u0131lavuzu okuyarak, ayr\u0131 tablolar\u0131 bir sorgu sonu\u00e7 k\u00fcmesinde birle\u015ftirmek i\u00e7in JOIN i\u015flemini nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. Burada g\u00f6sterilen komutlar \u00e7o\u011fu ili\u015fkisel veritaban\u0131nda \u00e7al\u0131\u015fsa da, her SQL veritaban\u0131n\u0131n dilin kendine \u00f6zg\u00fc bir uygulamas\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131 unutmay\u0131n. Her komutun ve t\u00fcm se\u00e7eneklerinin daha kapsaml\u0131 bir a\u00e7\u0131klamas\u0131 i\u00e7in DBMS belgelerinize ba\u015fvurmal\u0131s\u0131n\u0131z.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"Giri\u015f Bir\u00e7ok veritaban\u0131 tasar\u0131m\u0131, belirli veri noktalar\u0131 aras\u0131ndaki ili\u015fkilere dayanarak bilgileri tablolarda d\u00fczenler.","protected":false},"author":1,"featured_media":16027,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"","_yoast_wpseo_primary_category":"193","footnotes":""},"categories":[193,349],"tags":[403,391],"class_list":{"0":"post-15949","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-database","9":"tag-data-base","10":"tag-mysql"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran<\/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:\/\/www.itpiran.net\/blog\/tr\/tutorials\/how-to-use-joins-in-sql\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0637\u0631\u0627\u062d\u06cc \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0631\u0648\u0627\u0628\u0637 \u0628\u06cc\u0646 \u0646\u0642\u0627\u0637 \u062f\u0627\u062f\u0647 \u062e\u0627\u0635\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0647 \u062c\u062f\u0627\u0648\u0644&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/how-to-use-joins-in-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-22T17:56:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-14T17:02:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/07\/14203156\/joins-sql.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL\",\"datePublished\":\"2024-07-22T17:56:37+00:00\",\"dateModified\":\"2024-08-14T17:02:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/\"},\"wordCount\":213,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/14203156\\\/joins-sql.jpg\",\"keywords\":[\"data base\",\"MySQL\"],\"articleSection\":[\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/\",\"name\":\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/14203156\\\/joins-sql.jpg\",\"datePublished\":\"2024-07-22T17:56:37+00:00\",\"dateModified\":\"2024-08-14T17:02:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/14203156\\\/joins-sql.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/14203156\\\/joins-sql.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-joins-in-sql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tr\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQL&#039;de Birle\u015ftirmeler Nas\u0131l Kullan\u0131l\u0131r - ITPiran Blog","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:\/\/www.itpiran.net\/blog\/tr\/tutorials\/how-to-use-joins-in-sql\/","og_locale":"tr_TR","og_type":"article","og_title":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0637\u0631\u0627\u062d\u06cc \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0631\u0648\u0627\u0628\u0637 \u0628\u06cc\u0646 \u0646\u0642\u0627\u0637 \u062f\u0627\u062f\u0647 \u062e\u0627\u0635\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0647 \u062c\u062f\u0627\u0648\u0644&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/how-to-use-joins-in-sql\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-07-22T17:56:37+00:00","article_modified_time":"2024-08-14T17:02:31+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/07\/14203156\/joins-sql.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"admin","Tahmini okuma s\u00fcresi":"4 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL","datePublished":"2024-07-22T17:56:37+00:00","dateModified":"2024-08-14T17:02:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/"},"wordCount":213,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/14203156\/joins-sql.jpg","keywords":["data base","MySQL"],"articleSection":["\u0622\u0645\u0648\u0632\u0634\u06cc","\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/","name":"SQL&#039;de Birle\u015ftirmeler Nas\u0131l Kullan\u0131l\u0131r - ITPiran Blog","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/14203156\/joins-sql.jpg","datePublished":"2024-07-22T17:56:37+00:00","dateModified":"2024-08-14T17:02:31+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/07\/14203156\/joins-sql.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/14203156\/joins-sql.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-joins-in-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634\u06cc","item":"https:\/\/www.itpiran.net\/blog\/category\/tutorials\/"},{"@type":"ListItem","position":3,"name":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Joins \u062f\u0631 SQL"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"ITPiran Blog","description":"\u0130ran S\u00fcrd\u00fcr\u00fclebilir Ticaret Haberleri ve Makaleleri","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"S\u00fcrd\u00fcr\u00fclebilir \u0130ran \u0130\u015fletmeleri Blogu","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"y\u00f6netici","url":"https:\/\/www.itpiran.net\/blog\/tr\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/15949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/comments?post=15949"}],"version-history":[{"count":4,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/15949\/revisions"}],"predecessor-version":[{"id":16028,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/15949\/revisions\/16028"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media\/16027"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media?parent=15949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/categories?post=15949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/tags?post=15949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}