2007年12月12日 星期三

外鍵, :joins, :conditions

JOIN的一些說明
SQL JOIN
left join/right join/inner join的用法比較

example:

goals table

id name
1 abc
2 def

tasks table

id name goals_id
1 task1 1
2 task2 1
3 task3 2

 

想用goal name 做查詢時


@tasks = Task.find(:all,
                              :joins => "inner join goals on tasks.goal_id = goals.id",
                              :conditions => "goals.name = 'abc' ",
                              :select=>"tasks.id, tasks.name, task.goals_id")

如果沒有用:select 會find出

id name goals_id id name
1 task1 1 1 abc
2 task2 1 1 abc

這樣如果直接查@tasks.id 都是查到後面的 goal的id 都是1

所以要用:select 去取出tasks table的部份

這樣便可以查出

id name goals_id
1 task1 1
2 task2 1


沒有留言: