python/Django
[Django] ORM - INNER JOIN 과 LEFT OUTER JOIN
http://portfolio.wonpaper.net
2023. 5. 19. 05:27
Django ORM 기법에서 Join 문 방식의 사용법에 관해서 살펴보았다.
whdgh9595.log 님의 포스팅 글내용을 참고하면
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