Mas Padang,

Wajar saja kalau querynya lambat,
karena SQL yg anda jalankan akan menghasilkan cartesian product
(jumlah data yg dihasilkan = jml data_famili x duduk_lokal x duduk_asing)

Cara mudahnya gunakan model himpunan (dulu pernah belajar sewaktu di SD khan?)
logikanya = data_famili MINUS (duduk_lokal UNION duduk_asing)

SELECT no_fam FROM data_famili
MINUS
(SELECT no_fam FROM duduk_lokal
 UNION
 SELECT no_fam FROM duduk_asing
)

cmiiw,
bw


--- In [email protected], Padang Nadimpu <nadi...@...> wrote:
>
> 
> Kasus :
> Ada 3 table, yaitu data_famili, duduk_lokal, duduk_asing
> 
> Pada table data_famili (puluhan ribu record) ada field no_fam, misalnya
> no_fam
> -------------
> 1010092001
> 1010092002
> 1010092003
> 1010092004
> 1010092005
> 1010092006
> 1010092007
> 1010092008
> 1010092009
> 1010092010
> 1010092011
> 
> Pada table duduk_lokal (puluhan ribu record) juga ada field no_fam 
> yang sama dengan no_fam pada table data_famili, misalnya
> no_fam
> -------------
> 1010092001
> 1010092002
> 1010092003
> 1010092004
> 
> Pada table duduk_asing (ribu record) juga ada field no_fam 
> yang sama dengan no_fam pada table data_famili, misalnya
> no_fam
> -------------
> 1010092007
> 1010092008
> 1010092009
> 
> Mohon pencerahan Query
> Seleksi (select) no_fam dari table data_famili, duduk_lokal, duduk_asing
> dimana no_fam yang diseleksi dari data_famili tidak ada pada table 
> duduk_lokal juga tidak ada pada table duduk_asing.
> 
> Saya telah mencoba query di bawah ini melalui TOAD.
> 
> select a.no_fam as famili_fam,b.no_fam as lokal_fam,c.no_fam as asing_fam
> from data_famili a, duduk_lokal b, duduk_asing c
> where a.no_fam<> b.no_fam or a.no_fam<> c.no_fam 
> 
> Query seleksi di atas, proses untuk mendapat hasil seleksi sangat lambat, 
> dan rasanya tidak akurat. Untuk itu, mohon pencerahan query seleksi yang 
> lebih cepat dan akurat.
> 
> Atas bantuannya diucapkan terimakasih.
>


Kirim email ke