sql >> Databasteknik >  >> RDS >> PostgreSQL

Utrymme för en valfri has_one association med sig själv

Jag blev först förvirrad av termerna purchase och sale . Men din uppdatering tror jag hjälpte mig att förstå problemet mer.

Så vad jag förstod är allt osålt är köp minus försäljning. Följande bör ge dig den listan:

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

Uppdatering:

En kort förklaring av vad som händer här:

Omfattningen gör inte riktigt allt arbete i databasen. Den gör ett SQL-val av alla inköp inklusive den sammanslagna försäljningen först. Detta ger dig alla uppgifter i dina purchase tabell. Sedan faller detta omfång tillbaka till Ruby Arrayselect metod. Metoden returnerar alla köp p utan en sale vilket görs genom att förneka köp med försäljning.

Hoppas detta klargör vad omfattningen gör lite.

Uppdatering 2:

Ett kikarsikte som är kedjebart!

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

I detta omfång är id s av köp som inte finns i Sale s linked_indent_id är valda.



  1. Infogade data sparades inte i phpmyadmin-databasen

  2. mysql left join sum two tabeller med rollup

  3. Io-undantag:Oracle-fel ORA-12650 efter uppgradering av Oracle till 12g

  4. Utför almbic-uppgradering i flera scheman