2016-12-20 1 views
1

나는 두 개의 테이블을 가지고 있는데, 테이블 A는 부모이고, 테이블 B는 자식이다. 두 테이블 모두 "order_number"열을가집니다.다른 테이블의 동일한 열 값을 어떻게 일치시킬 수 있습니까?

표 A의 "order_number"열에서 표 B의 "order_number"열의 값과 일치하는 값을 찾으려면 표 A 레코드의 "id"를 다른 열에 저장하십시오 테이블 B 레코드의 열.

일치하는 열 값을 찾으려면 activerecord 쿼리가 필요합니다. 어떻게해야합니까?

난이 그것을해야한다고 생각 : 일치하는 열 값을 찾을 수

답변

2

액티브 쿼리

TableA.where(order_number: TableB.pluck(:order_number)) 

는 그런 다음 루프는 다음과 같은 TableA의 ID에 대한 TableB의 열을 업데이트 할 수 있습니다 이상을 (가정의 table_a_id라는 이름)

tablea_records = TableA.where(order_number: TableB.pluck(:order_number)) 
tablea_records.each do |a| 
    b.where(order_number:a.order_number).update_all(table_a_id: a.id) 
end 
+0

감사합니다. 이것은 효과가 있었다. 두 테이블이 서로 관련이 없거나 하나의 테이블이 다른 테이블에서 상속받는 경우에만 작동합니까? – NeyLive

+0

'TableA.where (order_number : TableB.pluck (: order_number))'이 쿼리에서는 기본적으로 tableA에서 특정 order_number 값을 찾습니다. 우리는 그것을'TableA.where (order_number : RandomTable.pluck (: random_column))'로 바꿀 수 있으며 여전히 잘 동작 할 것입니다. –

+0

도움 주셔서 감사합니다! – NeyLive

관련 문제