Birleştirme Deyimleri


    × Bunları biliyor muydunuz?
"ZN Framework düzenlenebilir dizin yapısı ile kendi kod çatınızı oluşturmanıza imkan veren dünyadaki tek kod çatısıdır."


Bu bölümde SQL işlemlerinde en çok kullanılan yapılar olan tablo birleştirmelerin ZN ile nasıl yapıldığı gösterilmiştir. ZN Framework ile tablo birleştirme işlemlerini son derece basit bir şekilde gerçekleştirebilmeniz mümkün.

 

 

# Yöntemler


This innerJoin(String $table, String $otherColumn, String $operator = '=')
This outerJoin(String $table, String $otherColumn, String $operator = '=')
This leftJoin(String $table, String $otherColumn, String $operator = '=')
This rightJoin(String $table, String $otherColumn, String $operator = '=')
This union(String $table)
This unionAll(String $table)

 

 

# InnerJoin (ZN >= 3.0.0)


Tablolar arasında SQL INNER JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar

Birleştirme işlemine konu olmuş tablolar ile hangi işlemlerin yapıldığı aşağıda örneklendirilmiştir.

Select
DB::innerJoin('comments.user_id', 'profiles.user_id')
  ->innerJoin('profiles.user_id', 'users.id')
  ->users();
SELECT *
FROM users
INNER JOIN comments ON comments.user_id = profiles.user_id
INNER JOIN profiles ON profiles.user_id = users.id
Update

Inner Join ile update işlemi

DB::where('table1.id', 20)->innerJoin('table2.user_id', 'table1.id')->update('table1',
[
    'table1.name'  => 'Example Name',
    'table2.phone' => '0000000000'
]);
UPDATE table1
INNER JOIN table2 ON table2.user_id = table1.id
SET table1.name='Example Name',table2.phone='0000000000'
WHERE table1.id = 20
Delete

Inner Join ile delete işlemi

DB::where('table1.id', 20)->innerJoin('table2.user_id', 'table1.id')->delete('table1');
DELETE table1, table2 FROM table1
INNER JOIN table2 ON table2.user_id = table1.id
WHERE table1.id = 20 

 

 

# OuterJoin (ZN >= 3.0.0)


Tablolar arasında SQL FULL OUTER JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar
DB::outerJoin('comments.user_id', 'profiles.user_id')
  ->outerJoin('profiles.user_id', 'users.id')
  ->users();
SQL Code:
SELECT *
FROM users
FULL OUTER JOIN comments ON comments.user_id = profiles.user_id
FULL OUTER JOIN profiles ON profiles.user_id = users.id

 

 

# LeftJoin (ZN >= 3.0.0)


Tablolar arasında SQL LEFT JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar
DB::leftJoin('comments.user_id', 'profiles.user_id')
  ->leftJoin('profiles.user_id', 'users.id')
  ->users();
SQL Code:
SELECT *
FROM users
LEFT JOIN comments ON comments.user_id = profiles.user_id
LEFT JOIN profiles ON profiles.user_id = users.id

 

 

# RightJoin (ZN >= 3.0.0)


Tablolar arasında SQL RIGHT JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar
DB::rightJoin('comments.user_id', 'profiles.user_id')
  ->rightJoin('profiles.user_id', 'users.id')
  ->users();
SQL Code:
SELECT *
FROM users
RIGHT JOIN comments ON comments.user_id = profiles.user_id
RIGHT JOIN profiles ON profiles.user_id = users.id

 

 

# Union (ZN >= 4.3.3)


Tablolar arasında SQL UNION deyimi ile birleştirme yapmak için kullanılır.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
Return This
Kullanımlar
$users = DB::select('id', 'name')->union('example')->select('id', 'phone')->users();

output($users->stringQuery());
output($users->result());
SELECT id,name FROM example UNION SELECT id,phone FROM users
0 => object
(
        id => string '2' ( length = 3 )
        name => string 'Example' ( length = 9 )
)
1 => object
(
        id => string '3' ( length = 3 )
        name => string 'Test' ( length = 5 )
)
2 => object
(
        id => string '1' ( length = 3 )
        name => string '55332587488' ( length = 7 )
)
3 => object
(
        id => string '2' ( length = 3 )
        name => string '88996544878' ( length = 4 )

 

 

# UnionAll (ZN >= 4.3.3)


Tablolar arasında SQL UNION ALL deyimi ile birleştirme yapmak için kullanılır.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
Return This
Kullanımlar
$users = DB::select('id', 'name')->unionAll('example')->select('id', 'phone')->users();

output($users->stringQuery());
output($users->result());
SELECT id,name FROM example UNION ALL SELECT id,phone FROM users
0 => object
(
        id => string '2' ( length = 3 )
        name => string 'Example' ( length = 9 )
)
1 => object
(
        id => string '3' ( length = 3 )
        name => string 'Test' ( length = 5 )
)
2 => object
(
        id => string '1' ( length = 3 )
        name => string '55332587488' ( length = 7 )
)
3 => object
(
        id => string '2' ( length = 3 )
        name => string '88996544878' ( length = 4 )