Ö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.
