1

我有一個模型書有很多副本。查詢和按模型的belongs_to關係排序

副本屬於書,也屬於學校,它有很多副本。

我想查詢與學校關聯的書籍並根據份數進行排序,並且對於如何在當前關係中執行此操作,我有點遺憾。

書模型包含副本的數據,如標題,作者等,副本就像本書的物理記錄。

任何幫助組織這種關係將不勝感激。

+0

等等,學校有書還是學校有書的副本?這聽起來像是,根據你的數據結構,學校可能有兩種,我很難理解。 – 2013-04-10 21:06:07

+0

可能寫得不好,但我想學校有很多副本通過書 – Zippie 2013-04-10 21:07:36

+0

學校只有副本,其中有書。你看到一本書可以在很多學校中使用,所以爲了建立書本和學校之間的關係,我想我需要一個單獨的模型來完成這個連接。 – spitfire109 2013-04-10 23:58:00

回答

1
Book.joins(:copies) 
    .where("copies.school_id = ?", school_id) 
    .order("COUNT(copies.id)") 
+0

這將取決於'書''有'school_id',這是我認爲可能不會感覺......儘管我不確定自己完全瞭解情況,但我可能是錯的。 – 2013-04-10 21:12:54

+0

現在,當我再次閱讀我看到,我可能(可能)誤解了這個問題 – Zippie 2013-04-10 21:16:11

0

我不能冒昧地給你的ActiveRecord的答案,但這裏是什麼可能是在SQL一個似是而非的答案:

SELECT book.name, 
     school.id, 
     COUNT(copy.*) number_of_copies 
    FROM book 
    JOIN copy on copy.book_id = book.id 
    JOIN school on copy.school_id = school.id 
GROUP BY school.id, 
     book.name 
ORDER BY number_of_copies 

這取決於你的表以某種方式來構成。在我看來,學校不會有書,但副本的書籍,所以我認爲copy表應該有一個school_idbook_idbookschool表都不應該有外部引用。

相關問題