PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cakupan untuk asosiasi has_one opsional dengan dirinya sendiri

Saya pertama kali bingung dengan istilah purchase dan sale . Tetapi pembaruan Anda, saya yakin, membantu saya lebih memahami masalahnya.

Jadi yang saya pahami adalah apa pun yang tidak terjual adalah pembelian dikurangi penjualan. Berikut ini akan memberi Anda daftar itu:

scope :unsold, lambda {includes(:sale).select { |p| !p.sale.present? } }

Pembaruan:

Penjelasan singkat tentang apa yang terjadi di sini:

Ruang lingkup tidak benar-benar melakukan semua pekerjaan dalam database. Itu melakukan pemilihan SQL dari semua pembelian termasuk penjualan gabungan terlebih dahulu. Ini memberi Anda semua catatan di purchase meja. Kemudian cakupan ini kembali ke Ruby Array pada select metode. Metode ini mengembalikan semua pembelian p tanpa sale yang dilakukan dengan meniadakan pembelian dengan penjualan.

Semoga ini menjelaskan sedikit tentang apa yang dilakukan ruang lingkup.

Pembaruan 2:

Lingkup yang dapat dirantai!

scope :unsold, lambda { where('id not in (?)', Sale.pluck(:linked_indent_id)) }

Dalam lingkup ini id s Pembelian yang tidak dalam Sale linked_indent_id dipilih.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengubah ORDER BY dari id ke kolom terindeks lainnya (dengan LIMIT rendah) memiliki biaya yang sangat besar

  2. Berikan izin kepada pengguna untuk setiap tabel baru yang dibuat di postgresql

  3. Apakah mungkin menggunakan variabel dan tidak menentukan tipe pengembalian di postgreSQL?

  4. Sintaks regexp_matches Postgresql tidak berfungsi seperti yang diharapkan

  5. SQLite berfungsi, tetapi basis data yang dimigrasikan PostgreSQL menyebabkan KESALAHAN - Django 3.0