Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zrobić wewnętrzne złącze w django?

Prawdopodobnie szukasz select_related , co jest naturalnym sposobem na osiągnięcie tego:

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

Możesz sprawdzić wynikowy SQL poprzez str(pubs.query) , co powinno skutkować w następującym wierszu (przykład pochodzi z zaplecza 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" ) 

Zwrócone wartości kursora są następnie tłumaczone na odpowiednie wystąpienia modelu ORM, dzięki czemu po przejściu przez te publikacje można uzyskać dostęp do wartości powiązanych tabel za pośrednictwem ich własnych obiektów. Jednak te dostępy wzdłuż wcześniej wybranych relacji do przodu nie spowodują dodatkowych trafień w 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. MySQL5.6 utknął w procesie próbującym uruchomić usługę

  2. DOŁĄCZ do GROUP BY w znormalizowanej bazie danych o zasobach, tematach i rozdziałach

  3. Nie można połączyć się zdalnie z instalacją EC2 MySQL

  4. dołączyć klasę Jfactory do zewnętrznego pliku php, Joomla

  5. Łączenie dwóch tabel w MySQL