2015-10-05 2 views
1

Это мои таблицы таблица BUSINESSSQL объединить две таблицы и вычислить среднее

BUSINESSUSERNAME|BUSINESSPASSWORD|BUSINESSNAME| Res1 |123 |Cafe | Res2 |456 |Foodtruck |

стол USER

USERNAME|USERPASSWORD|NAME| user1 |123 |mr.1| user2 |234 |mr.2|

стол FOOD

FOODID|FOODNAME|FOODPRICE|BUSINESSUSERNAME| 
1  |CAKE | 5  |Res1   | 
2  |SHAKE | 2  |Res2   | 
3  |COLA | 3  |Res1   | 

стол FOOD_RATING

FOODREVIEWID|FOODID|FOORATING|BUSINESSUSERNAME|USERNAME| 
1   |2  |3  |Res2   |user1 | 
2   |2  |5  |Res2   |user2 | 
3   |1  |4  |Res1   |user1 | 
4   |3  |1  |Res1   |user1 | 

я хотел бы получить эту таблицу где BUSINESSUSERNAME = "res1"

FOODNAME|FODPRICE|AVGRATING| 
CAKE |5  |4  | 
COLA |3  |1  | 
+0

выбрать один (MySQL, SQLServer, MSAccess). и почему businessusername хранятся как продукты питания и food_rating - это, вероятно, следует перестроенный – amdixon

ответ

1

запрос

select f.foodname, f.foodprice, avg(fr.foodrating) 
from food_rating fr 
inner join food f 
on fr.foodid = f.foodid 
group by f.foodname, f.foodprice 
; 

выход

+----------+-----------+--------------------+ 
| FOODNAME | FOODPRICE | avg(fr.foodrating) | 
+----------+-----------+--------------------+ 
| CAKE  |   5 |     4 | 
| SHAKE |   2 |     4 | 
+----------+-----------+--------------------+ 

sqlfiddle

+0

у меня есть этот код, но я не могу получить, где работать ВЫБРАТЬ FOOD.FOODNAME, FOOD.FOODPRICE, ROUND (AVG (FOODRATING), 1) AS FOODAVGRATING ОТ ЕДЫ LEFT JOIN FOOD_REVIEW ON FOOD.FOODID = FOOD_REVIEW.FOODID GROUP BY FOOD.FOODNAME, FOOD.FOODPRICE WHERE BUSINESSUSERNAME = "что-то –

+0

хорошо отсутствующих в endquotes после' something'. однако ваша структура странно. почему ты сохраняя имя businessus в обеих таблицах? – amdixon

+0

У меня есть 4 таблицы, которые являются BUSINESS, USER, FOOD, FOOD_REVIEW. BUSINESSUSERNAME - это мой первичный ключ в таблице BUSINESS, и я получаю «Синтаксическую ошибку (отсутствующий оператор) в выражении запроса« FOOD.FOODPRICE, где BUSINESSUSERNAME = что-то " –

Смежные вопросы