4 Ekim 2015 Pazar

EXISTS ve NOT EXISTS kullanımı

EXISTS VE NOT EXISTS KOMUTLARI : İki tablo'yu eşitleme ve arasındaki kayıt farklılıkları bulmak için kullanılan bir komuttur. Hem EXISTS hemde NOT EXISTS şeklinde kullanılır. Bu komutlar SUBSELECT tarzında kullanılır.

Örnek kodla eşitleme aşağıdaki gibidir.

WHERE EXISTS ( subquery );

Örnek kodla eşit olmayan aşağıdaki gibidir.

WHERE NOT EXISTS ( subquery );

Bir örnek yapalım SELECT ile;

SELECT *
FROM customers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE customers.customer_id = order_details.customer_id);
Yukarıda yapılan şey WHERE'den sonra EXISTS denilmiş, yani uyanları istemiş. Sonrasında parantez içinde SELECT, FROM ve WHERE kullanılmış. WHERE tarafında yapılması gereken tek bir işlem kaldı, oda üstteki SELECT * FROM'da yer alan tablonun ID'isi ile ikinci tablosunu ID'si eşitlemekle istenilen yapılmış olur.

SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
              FROM order_details
              WHERE customers.customer_id = order_details.customer_id);
NOT EXISTS'te de aslında değişen bir şey yok. Yukarıdaki açıklama birebir aynı bir eşitleme yapılmalı, sadece başına NOT EXISTS denmeli. Neden? çünkü bir eşit olmayanları istiyoruz. Hepsi bu kadar.

Yine DELETE, UPDATE ve INSERT'lerle de bu işlemler yapılabilir.

INSERT EXISTS örneği;

INSERT INTO contacts
(contact_id, contact_name)
SELECT supplier_id, supplier_name
FROM suppliers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE suppliers.supplier_id = order_details.supplier_id);

UPDATE EXISTS örneği;

UPDATE suppliers
SET supplier_name = (SELECT customers.name
                     FROM customers
                     WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT customers.name
              FROM customers
              WHERE customers.customer_id = suppliers.supplier_id);

DELETE EXISTS örneği;

DELETE FROM suppliers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE suppliers.supplier_id = order_details.supplier_id);

Yukarıdaki örnekleri anladığınızı düşünüyorum. Sorun yaşarsanız benimle iletişime geçin.

Hiç yorum yok:

fatihuzuner.com