Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara membuat Inner Join di Django?

Anda mungkin mencari select_related , yang merupakan cara alami untuk mencapai ini:

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

Anda dapat memeriksa SQL yang dihasilkan melalui str(pubs.query) , yang akan menghasilkan output di sepanjang baris berikut (contohnya dari backend 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" ) 

Nilai kursor yang dikembalikan kemudian diterjemahkan ke dalam contoh model ORM yang sesuai, sehingga saat Anda mengulang publikasi ini, Anda mengakses nilai tabel terkait melalui objeknya sendiri. Namun, akses ini di sepanjang hubungan penerusan yang telah dipilih sebelumnya tidak akan menyebabkan hit db tambahan:

{% 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. Apakah mungkin untuk menggabungkan string dari beberapa baris dan tabel menjadi satu kolom hasil?

  2. Cara Menginstal MySQL 8.0 di RHEL/CentOS 8/7 dan Fedora 35

  3. Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya (PHP / WAMP)

  4. Menyimpan UUID sebagai string di mysql menggunakan JPA

  5. PHP MySQL melalui SSL. Sertifikat rekan tidak cocok