Below is a query I make then render a json based on the results. However SELECT fields with the same name are overwritten for example meal.name and meal.id is being overwritten by restaurants.name and restaurants.id.
I tried the query string out in SQLite and it returns all the columns I need find, but it does not render properly as a JSON output. Any help would be appreciated. Thank you
Here is my rails code in my controller
@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
Here are the results:
[{"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}]
Here is the identical SQL command:
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
Here is the SQL results
name|id|sum(meal_ratings.rating)|name
Pizza|1|2|Parkside
Pork Chops|2|1|Parkside
Spaghetti|3|-1|EVK
You could use SQL aliases to get around this problem: