2016-03-25 18 views
0

Dies ist ein Code, der mir übergeben wurde, indem ich Benutzer aus der Datenbank auswählte und alle löschte, die nicht mehr existierten. Jetzt funktioniert es, aber ich denke, es könnte einen besseren Weg geben, damit umzugehen.Gibt es einen besseren Weg, damit umzugehen? (Psql, mit TOAD)

Ich bekomme nur Meinungen, wenn es andere Möglichkeiten gibt, diese Anfrage zu bearbeiten. Danke für jede Eingabe.

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 

Antwort

1

Scheint wie eine alberne Art, sich diesem zu nähern. Warum sollten Sie jede Kombination solcher Benutzer wünschen?

Ich würde geneigt sein, um jeden Wert legen auf einer separaten Zeile und union all verwenden:

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); 

Dies sollte viel schneller sein und haben im Wesentlichen die gleichen Informationen.

+0

Danke, ich muss das ausprobieren. Und ja, ich muss zustimmen, wie die Benutzer behandelt werden, sind ein wenig außer Kontrolle geraten. Aber Sie bekommen, was Sie erben, lol. – Demas

Verwandte Themen