Guest User

Untitled

a guest
May 9th, 2012
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. How can I programmatically find these duplicate records?
  2. ResponseSets.all.each do |set|
  3. answer_ids = []
  4. set.responses.each do |r|
  5. puts "Response #{r.id}: set=#{set.id}, answer=#{r.answer_id}"
  6. if answer_ids.include? r.answer_id
  7. puts "Duplicate found!"
  8. # r.destroy # Uncomment when you feel it is safe
  9. else
  10. answer_ids << r.answer_id
  11. end
  12. end
  13. end
  14.  
  15. select rs.id, r.answer_id, count(r.id)
  16. from response_sets rs
  17. join responses r on r.response_set_id = rs.id
  18. group by rs.id, r.answer_id
  19. having count(r.id) > 1;
  20.  
  21. select r.id
  22. from responses r
  23. join (
  24. select rs.id as rs_id, r.answer_id as a_id, r.id as r_id
  25. from response_sets rs
  26. join responses r on r.response_set_id = rs.id
  27. group by rs.id, r.answer_id
  28. having count(r.id) > 1
  29. ) on r.response_set_id = rs_id
  30. where r.answer_id = a_id and r.id != r_id;
Advertisement
Add Comment
Please, Sign In to add comment