0

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したいと思います。67sender_id1とreceiver_id67は、ソースから宛先へ、また宛先からソースへ(どちらの場合も「フォロー」名で)リンクされているためです。

1つのSQLクエリ(SQLで直接またはActiveRecord ORM)でそれを行うことはできますか?どうもありがとう!

4

1 に答える 1

2

次のクエリを試してください>>

select * from tablename t1,t2 where t1.sender_id = t2.receiver_id and t2.sender_id=t1.receiver_id and Name like follow"
于 2012-09-21T14:30:41.767 に答える