1
下面是一个查询,然后根据结果渲染json。但是,具有相同名称的SELECT字段将被覆盖,例如meal.name和meal.id将被restaurants.name和restaurants.id覆盖。Rails在查询后渲染JSON - 问题:覆盖相似的SELECT字段名称
我在SQLite中试过了查询字符串,它返回了我需要查找的所有列,但是它不能正确显示为JSON输出。任何帮助,将不胜感激。谢谢
这里是我的Rails代码在我的控制器
@meals = Meal.find(:all,
:select => 'meals.name, meals.id, sum(meal_ratings.rating), restaurants.name',
:joins => 'LEFT JOIN meal_ratings, restaurants ON meals.id = meal_ratings.meal_id AND restaurants.id = meals.restaurant_id',
:group => 'meal_ratings.meal_id ',
:order => 'meal_ratings.rating DESC')
respond_to do |format|
format.html # show.html.erb
format.json { render json: @meals } #
end
下面是结果:
[{"id":1,"name":"Parkside","sum(meal_ratings.rating)":2},
{"id":2,"name":"Parkside","sum(meal_ratings.rating)":1},
{"id":3,"name":"EVK","sum(meal_ratings.rating)":-1}]
这里是相同的SQL命令:
SELECT meals.name, meals.id, sum(meal_ratings.rating), restaurants.name
FROM meals
LEFT JOIN meal_ratings, restaurants ON meals.id = meal_ratings.meal_id AND restaurants.id = meals.restaurant_id
GROUP BY meal_ratings.meal_id
ORDER BY meal_ratings.rating DESC
这里是SQL结果
name|id|sum(meal_ratings.rating)|name
Pizza|1|2|Parkside
Pork Chops|2|1|Parkside
Spaghetti|3|-1|EVK
是啊是工作!谢谢。 – 2011-12-28 02:19:37
我现在有一个新问题。如果总和(meal_ratings.rating)为空,则不会返回膳食条目。我不知道为什么因为我正在做一个左加入,所以所有的食物都应该存在。请让我碰巧知道。再次感谢 – 2011-12-28 02:37:54
好吧,这是一个单独的问题。不,因为你没有接受或提出任何答案。 – Finbarr 2011-12-28 05:03:04