Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да направите вътрешно присъединяване в django?

Вероятно търсите select_related , което е естественият начин за постигане на това:

pubs = publication.objects.select_related('country', 'country_state', 'city')

Можете да проверите получения SQL чрез str(pubs.query) , което трябва да доведе до извеждане по следните редове (примерът е от бекенда на postgres):

SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ...  
FROM "publication" 
INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) 
INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) 
INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" ) 

След това върнатите стойности на курсора се превеждат в съответните екземпляри на ORM модел, така че когато прелиствате тези публикации, имате достъп до стойностите на свързаните таблици чрез техните собствени обекти. Въпреки това, тези достъпи по предварително избраните връзки напред няма да причинят допълнителни посещения в db:

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете резултати от mysql въз основа на географска ширина и дължина

  2. Mysql WHERE проблем със списък, разделен със запетая

  3. Невалиден опит за достъп до полето преди извикване на read()

  4. какво наистина прави mysql_real_escape_string()?

  5. Допълнителни полета с SQL MIN() &GROUP BY