29 Aralık 2016 Perşembe

MySQL Join

Cross Join
Genelde aynı tabloyu kartezyen çarpıma tabi tutmak için kullanılır. A tablosunda şu satırlar olsun.
'ta1'
'ta2'
'ta3'
'ta4'
Şöyle yaparız.
SELECT 
 A.name,
 B.name FROM ta A CROSS JOIN ta B 
WHERE A.id <> B.id
Şu çıktıyı elde ederiz.
|    ta1 |    ta2 |
|    ta1 |    ta3 |
|    ta1 |    ta4 |
|    ta2 |    ta1 |
|    ta2 |    ta3 |
|    ta2 |    ta4 |
|    ta3 |    ta1 |
|    ta3 |    ta2 |
|    ta3 |    ta4 |
|    ta4 |    ta1 |
|    ta4 |    ta2 |
|    ta4 |    ta3 |
Farklı iki tabloyu kartezyen çarpıma tabi tutmak için şöyle yaparız.
insert into C(myString_A, myString_B)
    select a.myString_A, b.myString_B
    from Table_A a cross join
         Table_B b;
Inner Join
Tablodaki en büyük x değerine sahip satırı buluruz. Bu cümleden id ve revision değerleri gelir. Ancak geri kalan sütunları teker teker yazmak istemeyiz. Tabloyu kendi içinde birleştirerek geriye kalan sütunları da almak için şöyle yaparız.
SELECT t.*
FROM your_table t
INNER JOIN
  (SELECT id, MAX(revision) revision FROM your_table GROUP BY id
  ) t1
ON t.id        = t1.id
AND t.revision = t1.revision;
Left Join
On kelimesinden sonra gelen = kontrolü istenilen sırada yazılabilir. Şöyle yaparız
select fields 
from tableA 
LEFT JOIN tableB 
ON tableA.key = tableB.key
veya şöyle yaparız.
select fields 
from tableA 
LEFT JOIN tableB 
ON tableA.key = tableB.key

Hiç yorum yok:

Yorum Gönder