- - PR -
Ruby on RailsでのUNION
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-08-31 18:55
初めて投稿します。
Ruby on Railsの勉強を始めたばかりなのですが、 SQLのUNIONの使用方法が分からず困っています。 初心者なので方向性自体正しくないかもしれませんが、 2つのテーブルに対しそれぞれ同等の抽出を行い1つの結果とし、 それに対しソートを行なった結果を取得したいと思い、 思い付く方法としてUNIONを試しています。 ---------------------------- select * from table1 union select * from table2; ---------------------------- というような単純なイメージなのですが、 ご教授の程宜しくお願いいたします。 --- Ruby on Rails:1.2.3 Ruby:1.8.6 PsotgreSQL:8.2.6 |
|
投稿日時: 2008-08-31 21:10
アクティブレコードを利用して、Unionを実現したい、という事でしょうか?
無理に、Findメソッドを使ってやるよりも、SQL文を実行させてしまっても いいと思いますが。 # 無理にメソッドを作って実装しても、メンテナンスで追う事が出来なくなる # 場合がありますので……。 あと、 > ---------------------------- > select * from table1 > union > select * from table2; > ---------------------------- は、カラムも全く同じなのでしょうか? |
|
投稿日時: 2008-08-31 22:36
ご回答いただき大変感謝いたします。
申し訳ありません、一応なのですが自己解決してしまいした。 また説明が全然足りておらず 失礼いたしました。 質問としては、 findメソッドでUNIONは可能か、 またはfind_by_sqlで変数の利用は可能か、 あるいは更に一般的な手法はありますでしょうか、というものでした。 selectを発行する際にwhere句で変数を使用したく、 その場合↓の様に行なうと思っているのですが find(:all, :conditions => ["column1 = ?", var1]) 仰る通りfindではUNIONを使用する方法がわからず、 find_by_sqlでは今度は変数を利用する方法が分からない、といった状況だったのですが、 find_by_sqlでも変数を利用することができました。 find_by_sql(["select * from table1 column1=? union select * from table2 where column1=?" "%#{var}%", "%#{var}%"]) 単なる構文の把握不足でした。 ありがとうございました。 |
1