똑같은 삽질은 2번 하지 말자

ruby on rails 복수의 테이블을 조인해서 모든 컬럼 조회 본문

카테고리 없음

ruby on rails 복수의 테이블을 조인해서 모든 컬럼 조회

곽빵 2021. 10. 31. 20:35

1:N , N:1 관계 정리

우선 ORM(ApplicationRecord < ActiveRecord)에게 테이블간의 관계를 확립시켜주는게 필요하다.

상품테이블이 있고 그 상품에는 브랜드와 카테고리라는 항목이 존재한다.

그렇게되면 모든 상품에는 하나의 브랜드, 카테고리가 존재하며 / 하나의 브랜드,카테고리에는 여러개의 상품이 존재한다.

 

models/product.rb

class Product < ApplicationRecord
    belongs_to :brand, foreign_key: :pr_br_id, primary_key: :br_id
    belongs_to :category, foreign_key: :pr_ca_id, primary_key: :ca_id
end

models/category.rb

class Category < ApplicationRecord
  has_many :product
end

 

models/brand.rb

class Brand < ApplicationRecord
  has_many :product
end

 

그리고 이제 조인해서 select *을 날려주면 끝난다.

@result = Product.joins(:brand, :category).select('*')

날라가는 쿼리

결과물의 각 요소들은 해당 테이블의 컬럼 물리명으로 되어있기때문에 그걸로 알아서 맵핑해서 리턴시켜주니 잘되었다.

 

inner join / outer join 헷갈릴때 보면 바로 이해되는 기사

https://jetalog.net/28

 

[Database] INNER JOIN과 OUTER JOIN의 차이

중복 없는 열(column)들을 Join한다고 가정했을 때, 가장 일반적인 경우입니다: A와 B를 Innter-Join하면 A와 B의 교집합을 얻을 수 있습니다. A와 B를 Outer-Join하면 A와 B의 합집합을 얻을 수 있습니다. Exam

jetalog.net

 

Comments