MySQL内连接?

时间:2012-03-07 11:51:40

标签: mysql inner-join

我有一个调查数据库设计。

我有一个带有user_id PK和名称的表USERS。

问题与question_id和question_text。

POSSIBLE_ANSWER,带有answer_id PK,值,文字。

另外,我有USER_ANSWERS,其中包含来自用户的user_id,Question_id,answer_id。

另外还有其他3个与我的问题无关的表格。

我需要的是为名字如'm%'的所有用户选择avg(值)。

希望这是明确的谢谢。

3 个答案:

答案 0 :(得分:2)

尝试以下方法:

select avg(PA.value)
from POSSIBLE_ANSWER PA
inner join USER_ANSWERS UA on PA.answer_id = UA.answer_id
inner join USERS U on U.user_id = UA.user_id 
where U.name like 'm%'

答案 1 :(得分:2)

SELECT u.user_id, u.name, AVG(pa.value) 
FROM USER_ANSWERS ua 
INNER JOIN POSSIBLE_ANSWER pa ON pa.answer_id = ua.answer_id
INNER JOIN USERS u ON ua.user_id = u.user_id
WHERE u.name LIKE 'm%'
GROUP BY u.user_id

如果您想要名称以“m”开头的所有用户的平均值,请删除GROUP BY。此查询提供平均PER用户,其名称以m。

开头

答案 2 :(得分:2)

你可以这样做:

SELECT u.name, AVG(pa.value) AS avgvalue
FROM USER_ANSWERS ua
INNER JOIN USERS u ON u.user_id = ua.user_id
INNER JOIN POSSIBLE_ANSWER pa ON pa.answer_id = ua.answer_id
WHERE u.name LIKE 'm%'
GROUP BY u.name

虽然我仍然有兴趣阅读你到目前为止所尝试的内容。您可以将u.user_id添加到您的选择列表并按其添加(例如PatrikAkerstrand) - 如果您的名称不是唯一的,则必须执行此操作