2016-03-25 22 views
0

Bu, veritabanından kullanıcıları seçip artık olmayan herhangi bir şeyi silerek bana gönderilen bir koddur. Şimdi çalışıyor ama bence bunu halletmenin daha iyi bir yolu olabilir. Bu talebin işleme başka yolları olup olmadığınıBunu halletmenin daha iyi bir yolu var mı? (Psql, TOAD kullanarak)

Sadece görüşler alıyorum. Herhangi bir girdi için teşekkürler.

SELECT uvt.user_id, 
      ulp.user_id, 
      uj.user_id, 
      uw.user_id, 
      pu.user_id 
    FROM U_V_T uvt, 
     U_L_P ulp, 
     U_J uj, 
     U_W uw, 
     P_U pu 
    WHERE uvt.user_id NOT IN(SELECT user_id FROM users) 
    AND ulp.user_id NOT IN(SELECT user_id FROM users) 
    AND uj.user_id NOT IN(SELECT user_id FROM users) 
    AND uw.user_id NOT IN(SELECT user_id FROM users) 
    AND pu.user_id NOT IN(SELECT user_id FROM users) 
    GROUP BY uvt.user_id,ulp.user_id, uj.user_id, uw.user_id, pu.user_id 

cevap

1

Buna yaklaşmanın aptalca bir yolu gibi görünüyor. Neden bu tür kullanıcıların her bir kombinasyonunu istersiniz?

Ben union all ayrı satırda Her değeri koymak ve kullanımı eğimli olacak:

select 'uvt' as which, user_id 
from u_v_t 
where user_id not in (select user_id from users) 
union all 
select 'ulp' as which, user_id 
from u_l_p 
where user_id not in (select user_id from users) 
union all 
select 'uj', user_id 
from u_j 
where user_id not in (select user_id from users) 
union all 
select 'uw', user_id 
from u_w 
where user_id not in (select user_id from users) 
union all 
select 'pu', user_id 
from p_u 
where user_id not in (select user_id from users); 

Bu çok daha hızlı ve temelde aynı bilgiye sahip olmalıdır.

+0

Teşekkürler, bunu denemek zorundayım. Ve evet, kullanıcıların nasıl ele alınacağını biraz daha elden ele almak zorundayım. Ama sen ne yaptığını aldın. – Demas

İlgili konular