sql >> Database teknologi >  >> RDS >> Mysql

Løsning til at finde dublerede registreringer, der involverer STI og forældre-barn-forhold

Følgende SQL ser ud til at gøre tricket

big_query = "
  SELECT EXISTS (
    SELECT 1
    FROM buyables b1
      JOIN buyables b2
        ON b1.shop_week_id = b2.shop_week_id
        AND b1.location_id = b2.location_id
    WHERE
      b1.parent_id != %1$d
      AND b2.parent_id = %1$d
      AND b1.type = 'Item'
      AND b2.type = 'Item'
    GROUP BY b1.parent_id
    HAVING COUNT(*) = ( SELECT COUNT(*) FROM buyables WHERE parent_id = %1$d AND type = 'Item' )
  )
"

Med ActiveRecord kan du få dette resultat ved at bruge select_value :

class Basket < Buyable
  def has_duplicate
    !!connection.select_value( big_query % id )
  end
end

Jeg er dog ikke så sikker på ydeevne



  1. Sender SentryOne-data til Azure SQL Database DTU Calculator

  2. UTF-8:Generelt? Beholder? Unicode?

  3. Har brug for et tip om simpelt MySQL db-design

  4. Hvordan vælger man rækker, der har bestemte relationer, gennem en pivottabel?