【Ruby】Ruby on Rails Part10
■ このスレッドは過去ログ倉庫に格納されています
0102nobodyさん
2010/09/18(土) 13:17:23ID:sMHwPaVbtableA
id|first_name|last_name|code
tableB
id|first_name|last_name|address|code
上記のようなテーブルがあり(ActiveRecordで作ったSQLite3)
tableBのlast_nameが未入力であるもののidと,それにcodeで対応しているtableAのidを同時に取得したいというのが目的です。
(両方のテーブルのidを取得するのが目的です。)
SELECT tableA.id AS A_id, tableA.last_name, tableB.id AS B_id from tableA LEFT OUTER JOIN tableB USING(code) WHERE tableA.code IN (SELECT code FROM tableB WHERE last_name = '');
とすると次のように結果が得られました(確認のため)。
A_id|last_name|B_id
....
....
ところが、Active Recordで
Table_A.find_by_sql(["select tableA.id AS A_id, talbeA.last_name, tableB.id AS B_id from tableA left outer join tableB using(code) where tableA.code in (select code from tableB where last_name = :name)", {:name => ''}])
としても
Table_B.find(:all,
:select => 'tableA.id as A_id, tableA.last_name, tableB.id as B_id',
:joins => 'LEFT OUTER JOIN tableB USING(code)',
:conditions => 'tableA.code IN (select code from tableB where last_nam = "")')
としても同じ結果を得られません。
(-> [#<Table_A last_name: "ほげほげ">]みたいなかんじでで,肝心のtableA.idとtableB.idがない。)
構文のどの辺りが間違っているのでしょうか?
あるいは、上記目的を達成する方法を教えてください。
よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています