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
...我想只得到66
和67
IDS作为一个结果。因为sender_id 1
和receiver_id 67
从源链接到目标,并且也从目标链接到源(在这两种情况下都有一个“跟随”名称)。
我们可以做到吗,只需一个SQL查询(直接在SQL中或ActiveRecord ORM中)?非常感谢!
,当然,请确保您有在桌子上适当的索引。如果没有索引,如果有大量数据,这将会是一个很慢的查询。 (使用'EXPLAIN'来查看查询计划器生成的计划。) – cdhowie
@cdhowie:可能是你的权利......但我的意图是在这些情况下给出关于查询写作的想法的方向...... – Freelancer
是的,我的评论并没有针对你,而只是为了向任何读者提供一些关于表现的信息。 – cdhowie