2015-04-23 32 views
0

在Rails 4,我有這些3個表:阿雷爾查詢問題,其中與基團

用戶表與這些列: -name -email

訂單表與這些列: -AMOUNT -user_id

項目表與這些列: -name -description

的OrderItems表這些列: ORDER_ID ITEM_ID

關係: -The的OrderItems表是連接表 - 用戶有許多訂單和訂單屬於用戶。

問題: 1)找到5點最大的訂單(與大多數項目訂單) 我想查詢是:

OrderItem.group(:order_id).order(count(id) desc").limit(5).pluck(:order_id) 

什麼是組究竟在做什麼?當我只輸入OrderItem.group(:order_id)時,我不理解輸出。

2)如何找到一個名爲「貝蒂」和」電子郵件‘[email protected]’。對於這個用戶,我是否需要寫我阿雷爾中的SQL?

回答

0
  1. OrderItem.group(:order_id)本身不會生成有效的SQL group變成SQL GROUP BY語句,如果它們共享指定的列的相同值,則會將行組合在一起。GROUP BY需要與SELECT語句一起使用,該語句的列GROUP BY或類似COUNT的集合函數。

    您的完整查詢中缺少order子句中的引號。你會想:

    OrderItem.group(:order_id).order("count(id) desc").limit(5).pluck(:order_id) 
    
  2. 要找到名稱爲 「貝蒂」 和電子郵件 「[email protected]」 用戶可以使用:

    User.where(name: "betty", email: "[email protected]")