Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 无法使此连接在rails中工作_Mysql_Ruby On Rails_Ruby On Rails 4_Join - Fatal编程技术网

Mysql 无法使此连接在rails中工作

Mysql 无法使此连接在rails中工作,mysql,ruby-on-rails,ruby-on-rails-4,join,Mysql,Ruby On Rails,Ruby On Rails 4,Join,我正在尝试在rails中加入以下内容 SELECT game_catergory_item.item_name, game_category_item_values.key, game_category_item_values.value FROM game_category_item INNER JOIN game_category_item_values ON game_category.id = game_category_item.game_category_id; WHERE game

我正在尝试在rails中加入以下内容

SELECT game_catergory_item.item_name, game_category_item_values.key, game_category_item_values.value
FROM game_category_item
INNER JOIN game_category_item_values
ON game_category.id = game_category_item.game_category_id;
WHERE game_category_item.game_gategory_id = 5
这是我的rails代码

def table
  game_id = 5
  @characters = GameCategory.joins(:game_category_items).
  select("game_catergory_items.name, game_category_item_values.key, game_category_item_values.value").
  where('game_category_item.game_gategory_id' => game_id)
end
这是上述编码的输出

SELECT game_catergory_items.name, game_category_item_values.key, game_category_item_values.value 
FROM "game_categories" 
INNER JOIN "game_category_items" 
ON "game_category_items"."game_category_id" = "game_categories"."id" 
WHERE "game_category_item"."game_gategory_id" = 5
过去几个小时我一直在兜圈子。是我寻求帮助的时候了

编辑:在@davejal的帮助下更进一步

GameCategoryItem.joins(:game_category_item_values).
select("game_category_items.name, game_category_item_values.key, game_category_item_values.value").
where('game_category_items.game_category_id' => game_id)
给予


“ON”表和行现在是错误的。

您的第一个查询应该不能在mysql中执行,连接后的where应该是这样的:

SELECT game_catergory_item.item_name, game_category_item_values.key, game_category_item_values.value
FROM game_category_item
INNER JOIN game_category_item_values
ON game_category.id = game_category_item.game_category_id
WHERE game_category_item.game_gategory_id = 5;
看看你的结果,我会改变:

@characters = GameCategory.joins(:game_category_items).
进入

更新:

根据您的谷歌文档,您的查询应该是:

SELECT game_category_item.item_name, game_category_item_values.key, game_category_item_values.value FROM game_category_item INNER JOIN game_category_item_values ON game_category_item.item_id= game_category_item_values.game_category_item_id WHERE game_category_item.game_gategory_id = 5
您的代码的结果是:

def table
  game_id = 5
  @characters = GameCategoryItem.joins(:game_category_items_values).
  select("game_catergory_items.name, game_category_item_values.key, game_category_item_values.value").
  where('game_category_item.game_category_id' => game_id)
end

还请注意,在where子句中,您使用了game_gategory_id而不是game_category_id

您的第一个查询应该不能在mysql中执行,where应该在join之后。如果您不在查询中添加表,您将无法在join中获得game_category表。目前,您正在加入两个表game_category_items和game_category_item_values,其中您还需要game_category。因此,您需要再添加一个连接来添加该表。添加数据库结构的基本部分,以便我可以提供更多帮助这里有一个带有数据库设置的google文档,我认为您的查询应该是:选择game\u category\u item.item\u name,game\u category\u item\u values.key,游戏\u类别\u项目\u值。来自游戏\u类别\u项目的值内部连接游戏\u类别\u项目\u值在游戏\u类别\u项目上。项目\u id=游戏\u类别\u项目\u值。游戏\u类别\u项目\u id在哪里游戏\u类别\u项目。游戏\u网关\u id=5查看我更新的答案并测试它。谢谢!令人尴尬的是,我也有拼写错误,“游戏类别项目。游戏门控项目id”应该是“游戏类别项目。游戏类别项目id”。我发现从你的替代者抛出的新错误中,我的安装程序给出的错误没有意义。你的修复程序使连接正确并指出了错误。嗯,说得太快了。它没有返回我需要的东西。game category项目加载0.3ms选择game\u category\u items.name,game\u category\u item\u values.key,game\u category\u items\u values.value从game\u category\u items内部加入game\u category\u item\u values.game\u category\u items\u id=game\u category\u items.id其中game\u items.game\u category\u items\u id=9=>不确定您现在的问题是什么,但根据您希望查询的内容,它是正确的输出。添加数据库模式会很有帮助,然后我可能会看到一些其他问题。如果出于某种原因,连接中还需要一个表,请参阅运行您提供的sql!但是,如果我运行Rails join命令,它会将其转换为正确的sql,但不会像运行sql那样输出正确的表,在Rails控制台中运行它们会很奇怪。
SELECT game_category_item.item_name, game_category_item_values.key, game_category_item_values.value FROM game_category_item INNER JOIN game_category_item_values ON game_category_item.item_id= game_category_item_values.game_category_item_id WHERE game_category_item.game_gategory_id = 5
def table
  game_id = 5
  @characters = GameCategoryItem.joins(:game_category_items_values).
  select("game_catergory_items.name, game_category_item_values.key, game_category_item_values.value").
  where('game_category_item.game_category_id' => game_id)
end