Oracle PL/SQL: OUTER JOIN Ne zaman kullanilir?
Bir onceki yazimizda Inner Join'den bahsetmistik. Left Outer Join veya Left Join ile devam edelim. Bu join tipi sol tarafta verilen tablodaki tum satırları getirirken sag tarafta kalan tablo icin sadece JOIN kosulunu saglayanları getirir. Ornekle somutlastırırsak eger; Araba ve bisiklet kiralama yapan bir sirketin siparis takip programinda cars, customers, bikes ve rentals isimli 4 adet tablo bulunmakta...Rentals tablosu musterinin hangi demirbasi ne zaman kiraladıgını gosteren bir gecmisi, digerleri de musteri ve envanter detaylarını tutan tablolardir.
id |
license_plate |
purchase_date |
100 |
34ZA700 |
06/06/2000 |
101 |
34ET800 |
10/06/2000 |
id |
name |
10 |
Ali |
11 |
Veli |
12 |
Recep |
id |
car_id |
bike_id |
customer_id |
rental_date |
1 |
100 |
|
10 |
07/08/2000 |
2 |
|
202 |
10 |
08/09/2000 |
SELECT * FROM customers
INNER JOIN rentals on (rentals.customer_id = customers.customer_id)
LEFT JOIN cars on (car_id = rentals.car_id)
WHERE customers.customer_id = 10
Ilk once INNER JOIN ile customers ve rentals tablolari birbirine baglanarak kesisim kumesi alinmistir. Yani customer_id 10 icin customers ve rentals tablosundaki ortak satirlar getirilmistir. Asagidaki tabloda goruldugu uzere tum satirlar istendigi icin soldan saga sirasiyla customers ve rentals tablolarinin satirlari siralanmistir. Eger customer_id 10 icin hem arac hem de bisiklet kiralama gecmisini getirmek isteseydik INNER JOIN ile bunu yapamazdik.
id |
name |
id |
CAR_ID |
bike_id |
customer_id |
rental_date |
car_id |
license_plate |
purchase_date |
10 |
Ali |
2 |
- |
202 |
10 |
08/09/2000 |
- |
- |
- |
10 |
Ali |
1 |
100 |
- |
10 |
07/08/2000 |
100 |
34ET700 |
06/06/2000 |
10 |
Ali |
1 |
100 |
- |
10 |
07/08/2000 |
101 |
34ET800 |
10/06/2000 |
No comments :
Post a Comment