왼쪽 외부는 Rails 3에서 결합됩니다.
다음 코드가 있습니다.
@posts = Post.joins(:user).joins(:blog).select
이는 모든 게시물을 찾아 해당 게시물과 관련 사용자 및 블로그를 반환하기위한 것입니다. user-는 선택 그러나 사항 INNER JOIN
이므로 :joins
생성하는이 사람 많은 레코드를 반환하지 않습니다.
LEFT OUTER JOIN
대신 이것을 생성하기 위해 어떻게 사용 하십니까?
@posts = Post.joins("LEFT OUTER JOIN users ON users.id = posts.user_id").
joins(:blog).select
includes
Rails 가이드에 설명 된 대로이 작업을 수행 할 수 있습니다 .
Post.includes(:comments).where(comments: {visible: true})
결과 :
SELECT "posts"."id" AS t0_r0, ...
"comments"."updated_at" AS t1_r5
FROM "posts" LEFT OUTER JOIN "comments" ON "comments"."post_id" = "posts"."id"
WHERE (comments.visible = 1)
나는 squeel gem 의 열렬한 팬입니다 .
Post.joins{user.outer}.joins{blog}
inner
및 outer
조인을 모두 지원할 뿐만 아니라 다형 적 소속 관계에 대한 클래스 / 유형을 지정하는 기능도 지원합니다 .
사용 eager_load
:
@posts = Post.eager_load(:user)
기본적으로 ActiveRecord::Base#joins
명명 된 연결 을 전달 하면 INNER JOIN이 수행됩니다. LEFT OUTER JOIN을 전달해야합니다.
에서 문서 :
:joins
- "LEFT JOIN comments ON comments.post_id = id
"(드물게 필요함) 와 같은 추가 조인에 대한 SQL 조각 ,:include
옵션에 사용 된 동일한 형식의 명명 된 연관 , 이미지 테이블에서 INNER JOIN을 수행하거나 두개의 혼합을 포함하는 배열 및 명명 된 연관.일치하지 않는 속성을 가지 레코드는 읽기 전용으로 반환되는 테이블의 열과 일치하지 않습니다. 패스
:readonly => false
재정에.
있습니다 left_outer_joins의 액티브있는 방법은. 다음과 같이 사용할 수 있습니다.
@posts = Post.left_outer_joins(:user).joins(:blog).select
좋은 소식입니다. Rails 5는 이제 LEFT OUTER JOIN
. 이제 쿼리는 다음과 가변됩니다.
@posts = Post.left_outer_joins(:user, :blog)
class User < ActiveRecord::Base
has_many :friends, :foreign_key=>"u_from",:class_name=>"Friend"
end
class Friend < ActiveRecord::Base
belongs_to :user
end
friends = user.friends.where(:u_req_status=>2).joins("LEFT OUTER JOIN users ON users.u_id = friends.u_to").select("friend_id,u_from,u_to,u_first_name,u_last_name,u_email,u_fbid,u_twtid,u_picture_url,u_quote")
참고 URL : https://stackoverflow.com/questions/3245201/left-outer-joins-in-rails-3
'IT' 카테고리의 다른 글
jQuery의 removeAttr로 여러 속성 제거 (0) | 2020.09.16 |
---|---|
Vim에 타임 스탬프를 삽입하는 가장 좋은 방법은 무엇입니까? (0) | 2020.09.15 |
Google Maps Api v3- 가장 가까운 마커 찾기 (0) | 2020.09.15 |
OAuth 2.0 인증 헤더 (0) | 2020.09.15 |
OS X Mavericks 용 Eclipse Kepler, Java SE 6 요청 (0) | 2020.09.15 |