0
我在大部分時間都使用ORM工具進行開發。我需要執行一些SQL - 不在我典型的Rails環境中。單個結果中的SQL子集結果
"SELECT projects.id, projects.company_id, projects.name,
companies.name as company_name,
people.name as person_name,
users.name as user_name
FROM projects
INNER JOIN companies ON companies.id = projects.company_id
LEFT OUTER JOIN project_people ON project_people.project_id = projects.id
LEFT OUTER JOIN people ON people.id = project_people.person_id
LEFT OUTER JOIN project_users ON project_users.project_id = projects.id
LEFT OUTER JOIN users ON users.id = project_users.user_id"
如果我選擇單個記錄,我通常會在結果中獲得多行,例如如果我有2個project_people和2個project_users。
我會得到:
{"id"=>"7744", "company_id"=>"42598", "name"=>"Project with a name", "company_name"=>"(Confidential)", "person_name"=>"A person name", "user_name"=>nil}
{"id"=>"7744", "company_id"=>"42598", "name"=>"Project with a name", "company_name"=>"(Confidential)", "person_name"=>"Another name", "user_name"=>nil}
{"id"=>"7744", "company_id"=>"42598", "name"=>"Project with a name", "company_name"=>"(Confidential)", "person_name"=>"Another name", "user_name"=>'Some user'}
{"id"=>"7744", "company_id"=>"42598", "name"=>"Project with a name", "company_name"=>"(Confidential)", "person_name"=>"A person name", "user_name"=>'Some user'}
我想有是如下:
{"id"=>"7744", "company_id"=>"42598", "name"=>"Project with a name", "company_name"=>"(Confidential)", "people"=>{
"person_name"=>"A person name",
"person_name"=>"Another name",
}, "users"=>{
"user_name"=>nil,
"user_name"=>'Some user'
}
}
我知道你們中的一些大師在SQL就可以輕鬆解決這個問題但我不敢想這是多麼可怕的問題,我問這樣一個蹩腳的問題。我敢肯定,這是可能的 - 與一個單一的查詢