Advertisement
roganhamby

Annual Cleanup - Abandoned Records w/ No Holdings

Feb 27th, 2013
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- first step, create a table of call number IDs with no holdings
  2. CREATE TABLE rogan.acn_no_holdings AS
  3. SELECT call.id
  4. FROM biblio.record_entry bib
  5. LEFT JOIN asset.call_number call ON (bib.id = call.record)
  6. LEFT JOIN asset.COPY COPY ON (call.id = COPY.call_number)
  7. WHERE bib.deleted IS FALSE AND call.deleted = FALSE
  8. AND (COPY.deleted IS NULL OR NOT COPY.deleted)
  9. AND (call.deleted IS NULL OR NOT call.deleted)
  10. AND bib.create_date < NOW() - INTERVAL '30 days'
  11. and bib.source not in (101,102)
  12. GROUP BY 1
  13. HAVING COUNT(COPY.id) = 0;
  14.  
  15. -- now bibs
  16. CREATE TABLE rogan.bre_no_holdings AS
  17. SELECT bib.id
  18. FROM biblio.record_entry bib
  19. LEFT JOIN asset.call_number call ON (bib.id = call.record)
  20. LEFT JOIN asset.COPY COPY ON (call.id = COPY.call_number)
  21. WHERE bib.deleted IS FALSE
  22. AND (COPY.deleted IS NULL OR NOT COPY.deleted)
  23. AND (call.deleted IS NULL OR NOT call.deleted)
  24. AND bib.create_date < NOW() - INTERVAL '30 days'
  25. and bib.source not in (101,102)
  26. GROUP BY 1
  27. HAVING COUNT(COPY.id) = 0;
  28.  
  29.  
  30. SELECT COUNT(id) FROM rogan.acn_no_holdings;
  31. SELECT COUNT(id) FROM rogan.bre_no_holdings;
  32.  
  33. -- see what bibs come u
  34.  
  35. UPDATE asset.call_number SET deleted = TRUE WHERE record IN
  36. (SELECT id FROM rogan.acn_no_holdings) AND NOT deleted;
  37.  
  38. -- And now the bibs,
  39.  
  40. UPDATE biblio.record_entry SET deleted = TRUE WHERE id IN
  41. (SELECT id FROM rogan.bre_no_holdings);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement