使用する共通の列 ID が各テーブルで異なる名前を持つ 2 つのテーブルを結合する必要があります。2 つのテーブルには「偽」の共通の列名があり、dplyr がデフォルトを使用して列「id」で結合すると機能しません。
この問題に関連するコードの一部を次に示します
library(dplyr)
library(RMySQL)
SDB <- src_mysql(host = "localhost", user = "foo", dbname = "bar", password = getPassword())
# Then reference a tbl within that src
administrators <- tbl(SDB, "administrators")
members <- tbl(SDB, "members")
メンバー側の共通列が「id」で、管理者側の共通列が「idmember」であるという情報を渡すための 3 つの試行 (すべて失敗) を次に示します。
sqlq <- semi_join(members,administrators, by=c("id","idmember"))
sqlq <- inner_join(members,administrators, by= "id.x = idmember.y")
sqlq <- semi_join(members,administrators, by.x = id, by.y = idmember)
表示されるエラー メッセージの例を次に示します。
mysqlExecStatement(conn, statement, ...) のエラー: RS-DBI ドライバー: (ステートメントを実行できませんでした: 不明な列 '_LEFT.idmember' in 'where clause')
私が目にする例は、R 側のデータ テーブルとデータ フレームに関するものです。私の質問は、dplyr が "by" ステートメントを SQL エンジンに送信する方法についてです。