【发布时间】:2014-09-07 13:53:08
【问题描述】:
我有一些表格:用户、帖子、翻译、词汇表 用户可以创建帖子,对帖子上的单词进行翻译,还可以将其他人的翻译标记为词汇表以供审查。表词汇表只有 2 列 (user_id,translation_id) 在控制器中我声明变量:
@translations = @post.translations.where("translations.words=?", params[:words], params[:end]).joins("LEFT OUTER JOIN vocabularies ON vocabularies.translation_id = translations.id AND vocabularies.user_id = 6").select("translations.*")
并得到错误
SQLite3::SQLException: near "*": syntax error: SELECT COUNT(translations.*) FROM "translations" LEFT OUTER JOIN vocabularies ON vocabularies.translation_id = translations.id AND vocabularies.user_id = 6 WHERE "translations"."post_id" = ? AND (translations.words='hello')
还有一个问题,因为 :translations 和 :vocabularies 都有相同的 user_id 列,那么如何将 :vocabularies 的 user_id 别名为 learner_id 呢? 我尝试运行此命令,但仍然出现错误:SQLite3::SQLException: near "as":
@translations = @post.translations.where("translations.words=?", params[:words], params[:end]).joins("LEFT OUTER JOIN vocabularies ON vocabularies.translation_id = translations.id AND vocabularies.user_id = 6").select("translations.*, vocabularies.user_id as learner_id")
请帮帮我。谢谢。
【问题讨论】:
-
我认为您可以将查询减少到类似
@post.translations.joins(:vocabularies).where(words: params[:words] + params[:end], vocabularies: {user_id: 6})并在末尾添加选择 -
我觉得我可以使用 joins 命令,但是我在使用 select 命令时遇到了问题,它出现错误 SQLException: near "*": syntax error
标签: sql ruby-on-rails rails-activerecord