0

私は次のように結合を構築しようとしています:

UserLog.find(:all, :joins => " JOIN client_inspector ON user_log.COMPUTER_NAME = client_inspector.Retrieving_Hostname ", :select=>  "DISTINCT user_log.COMPUTER_NAME, client_inspector.Retrieving_Hostname ")

しかし、それは私に次のエラーを与えます->

ActiveRecord::StatementInvalid (Mysql2::Error: Table 'user_log.client_inspector' doesn't exist: SELECT DISTINCT user_log.COMPUTER_NAME, client_inspector.Retrieving_Hostname  FROM `user_log` JOIN client_inspector ON user_

log.COMPUTER_NAME = client_inspector.Retrieveing_Hostname):

MYSQLエラーを理解しましたが、なぜRailsがこれを行っているのですか?

これらの2つのテーブルを関連付けて作成されたモデルはありません。私がやりたいのは、Rubyが組み込まれているデフォルト以外のさまざまな列を介して参加できるようにすることです。

これを行う別の方法はありますか?

編集:実際のテーブル名を含めるように更新しました。

4

2 に答える 2

0

mysqlリクエストは有効です。モデル間の関連付けは必要ないと思います。

モデルのテーブル名は複数形の名前で作成されています。これを試してみてください:

UserLog.find(:all, :joins => " JOIN client_inspectors ON user_logs.COMPUTER_NAME = client_inspectors.Retrieving_Hostname ", :select=>  "DISTINCT user_logs.COMPUTER_NAME, client_inspectors.Retrieving_Hostname ")

mysqlクエリの各テーブル名に「s」を付ける

編集:テーブル名で更新

于 2012-09-10T16:47:25.810 に答える
0

これに対する答えを探している人は、これを使用してデータを取得してください->

@returned_fields = ActiveRecord::Base.connection.execute(sql)

これは「モデル」オブジェクトを返しませんが、一般的なMySQL::Resultオブジェクトを返します。これを使用してデータを取得します->

@returned_fields.each

これにより、次のような配列の配列が得られます->

[[1,2], [3,4], etc...]

また、テーブルをデータベース名で次のように修飾するようにしてください->

SELECT foo FROM database.BAR as bar JOIN database.BLEZ as blez ON bar.COMPUTER_NAME = blez.Retrieving_Hostname

私の問題は、データベースの適格性確認であることが判明しました。資格がなかったため、間違ったデータベース(現在接続しているデータベース)でテーブルを探していました。

于 2012-09-14T18:43:58.617 に答える