python/Django

[Django] ORM - INNER JOIN 과 LEFT OUTER JOIN

http://portfolio.wonpaper.net 2023. 5. 19. 05:27

Django ORM 기법에서 Join 문 방식의 사용법에 관해서 살펴보았다.

 

whdgh9595.log 님의 포스팅 글내용을 참고하면

 

(TIL) SQL문 INNER JOIN 과 LEFT OUTER JOIN

INNER JOIN 과 LEFT OUTER JOIN

velog.io

 

Users 와 Carts 가 1:N 의 관계이다.

 

정참조  select_related

 

Cart.object.all().select_related("user")

NULL = TRUE 의경우 LEFT OUTER JOIN
NULL = FALSE or on_delete=models.CASCADE 의경우 INNER JOIN

 

cart.user.id

 

 

역참조  prefetch_related

 

User.objects.all().prefetch_related("cart_set")

prefetch_related의 경우 1+N번의 쿼리를 날리고 가져온다음
Python LEVEL에서 JOIN을 하며 INNER JOIN으로 참조,역참조 값을 가져온다.

 

user.cart_sel.all()

 

 

참고 : https://velog.io/@whdgh9595/TIL-SQL%EB%AC%B8-INNER-JOIN-%EA%B3%BC-LEFT-OUTER-JOIN