Railsを使用していて、次のLink
テーブルを持つActiveRecordモデルがあります。
create_table "links", :force => true do |t|
t.string "name", :null => false
t.integer "sender_id", :null => false
t.integer "receiver_id", :null => false
end
add_index "links", ["name"], :name => "index_links_on_name"
add_index "links", ["sender_id", "receiver_id"], :name => "index_links_on_sender_id_and_receiver_id", :unique => true
私がやりたいのはname = "follow"
、ソースから宛先まで、および宛先からソースまで存在するすべてのリンクを選択することです。
たとえば、次のエントリがあります。
id | name | sender_id | receiver_id
---------------------------------------
66 | "follow" | 1 | 2
67 | "follow" | 2 | 1
68 | "follow" | 1 | 3
69 | "fuu" | 3 | 1
70 | "bar" | 2 | 25
71 | "bar" | 25 | 2
...結果としてIDを取得66
したいと思います。67
sender_id1
とreceiver_id67
は、ソースから宛先へ、また宛先からソースへ(どちらの場合も「フォロー」名で)リンクされているためです。
1つのSQLクエリ(SQLで直接またはActiveRecord ORM)でそれを行うことはできますか?どうもありがとう!