在我們的rails應用程序中,有3個表格payment_logs
,sourcings
和purchasings
。 payment_log屬於採購或採購,但不屬於同一時間。採購和採購都有一個col project_id
。我們想要拿起all payment_logs with its project_id = project_id_search
(從搜索頁面傳遞的project_id_search)。我們還需要一個ActiveRecord作爲返回的結果集。這裏是單獨的查詢,假設payment_logs持有ActiveRecord的結果集:在rails 3.1.4與sqlite3聯合的正確方法?
挑其採購的PROJECT_ID = project_id_search
payment_logs = payment_logs.joins所有payment_logs(:採購)。凡(「sourcings.project_id ?= 「project_id_search)
挑其採購的PROJECT_ID = project_id_search
payment_logs = payment_logs所有payment_logs(:購買)。凡(」 purchasings.project_i d =?」,project_id_search)
我們需要工會1和2,以拿起所有其PROJECT_ID = project_id_search的payment_logs。什麼是實現它的正確方法?我們沒有在rails中找到union,find_by_sql返回的數組不是我們想要的。謝謝。
Works。謝謝。有沒有辦法用rails風格查詢替換SELECT?像Sourcing.where(「project_id =?」,project_id_search).select(「id」)。替換時出現了一堆錯誤。 – user938363 2012-07-30 20:31:02
我試圖找到更好的方法來做到這一點,但找不到太多...我認爲你必須堅持這種醜陋的SQL語法,或者如果你願意做多個SQL請求,你可以同時做請求分開,然後合併兩個結果集 – 2012-07-30 20:35:57
我試圖合併,但沒有解決。我發佈了和你一樣的想法。試圖以rails方式實現。使用的範圍如下:sourcing_id => [sourcing_ids] OR:purchasing_id => [purchasing_ids]並且沒有成功。嘗試在哪裏(「sourcing_id IN?or purchasing_id IN?」,[sourcing_ids],[purchasing_ids])。兩者都沒有解決。 – user938363 2012-07-30 21:01:59