FirebirdSQL predicate EXISTS
dalam firebird, ada yang namanya peryataan predikat yaitu "exists".
fungsinya untuk memastikan apakah hasil subquery terdapat paling tidak satu record atau lebih.
jadi misalnya kamu punya database yang saling berelasi, tapi tidak punya foreign keys (seperti cascade). lalu didalamnya terdapat 2 tabel, yaitu "kategori" dan "produk".
lalu kamu ingin mencari kategori yang tidak produk, maka ...
atau mencari produk yang tidak punya kategori ...
untuk sebaliknya, tinggal ganti "where not exists" dengan "where exists".
termasuk hapus, cukup ganti "select ..." dengan "delete".
fungsinya untuk memastikan apakah hasil subquery terdapat paling tidak satu record atau lebih.
jadi misalnya kamu punya database yang saling berelasi, tapi tidak punya foreign keys (seperti cascade). lalu didalamnya terdapat 2 tabel, yaitu "kategori" dan "produk".
kategori | |
k_id | kate |
2 | udara |
5 | darat |
6 | laut |
produk | ||
h_id | k_id | hewan |
17 | 5 | kambing |
19 | 5 | keledai |
21 | 6 | paus |
99 | 99 | naga |
lalu kamu ingin mencari kategori yang tidak produk, maka ...
select a.* from kategori a where not exists ( select b.* from produk b where b.k_id = a.k_id )
atau mencari produk yang tidak punya kategori ...
select a.* from produk a where not exists ( select b.* from kategori b where b.k_id = a.k_id )
untuk sebaliknya, tinggal ganti "where not exists" dengan "where exists".
termasuk hapus, cukup ganti "select ..." dengan "delete".
Komentar
Posting Komentar
Komentar ...