我有3個表我需要連接在一起。Rails 3使用選擇不同
我有Events
,Places
,並且Boroughs
地方屬於市鎮,並有許多活動
從在某一天的事件列表,我想檢索所有不同的列表行政區。
Event.where(day_of_week: 2).joins(:place,:borough).select("DISTINCT(boroughs.name) AS name")
生成的SQL:
SELECT DISTINCT(boroughs.name) AS name FROM "events" INNER JOIN "places" ON "places"."id" =
"events"."place_id" INNER JOIN "places" "places_events_join" ON "places_events_join"."id" =
"events"."place_id" INNER JOIN "boroughs" ON "boroughs"."id" =
"places_events_join"."borough_id" WHERE "events"."active" = 't' AND "events"."day_of_week" = 3
這看起來很完美,當我把它放到我的Postgres數據庫控制檯工作,但是我的鐵軌控制檯我得到。
#<Event >, #<Event >, #<Event >, #<Event >, #<Event >, #<Event >, #<Event >, #<Event >, #<Event >, #<Event >
UPDATE:
Mr.The海象的建議,完美的作品,但我仍然感到困惑,爲什麼走另一條路,當SQL本身產生相同的結果周圍不起作用。
Borough.joins(:events).where(:events => {:day_of_week => 2}).select("DISTINCT(boroughs.name) AS name")
產地:
[#<Borough name: "richmond">, #<Borough name: "southwark">, #<Borough name: "brent">, #<Borough name: "city of london">]
但這
Event.where(:events => {:day_of_week => 2}).joins(:borough).select("DISTINCT(boroughs.name) AS name")
產地:
[#<Event >, #<Event >, #<Event >, #<Event >, #<Event >]
其實我試過了。仍然得到[#,#,#,#,#,#,#,#,#,#] –
holden
2013-02-22 20:25:44
哦,如果您使用的是加入你可能需要用完全限定它表名。我會更新答案。 – 2013-02-22 20:28:42
mmm ...具有相同的效果。不用找了。 – holden 2013-02-23 12:03:40