2013-03-26 55 views
1

我有2个select语句从同一个人的两张表中提取数据。我知道他们可以通过联合进行组合,但我无法获得适合我的语法。mysql结合了多个select语句结果

查询1:

SELECT SUBSTRING_INDEX(username,'@',1) AS username, 
COUNT(username) as count, 
ROUND(
SUM(
CONVERT(SUBSTRING(contribution_score, -2), UNSIGNED INTEGER) + 
CONVERT(SUBSTRING(focused_score, -2), UNSIGNED INTEGER) + 
CONVERT(SUBSTRING(prepared_score, -2), UNSIGNED INTEGER) + 
CONVERT(SUBSTRING(work_score, -2), UNSIGNED INTEGER) 
)/COUNT(username)/76*100) 
as average 

FROM project_rubrics 
GROUP BY username 
LIMIT 0, 90 

问题2:

SELECT username,COUNT(username) as days FROM logon GROUP BY username 

的公共链路用户名字段。
我想要一个给出每个学生的用户名,天数和平均值的结果集,但我无法获得连接或组合选择来工作。

任何帮助表示赞赏。

+0

的UNION关键字是你找什么见http://www.mysqltutorial.org/sql-union-mysql.aspx – DragonZero 2013-03-26 20:49:34

+0

联盟将不起作用,除非他改变了第二第二查询的列名,在这种情况下,会为每个用户名创建两行。 – Robbert 2013-03-26 21:01:10

回答

0

你可以做一个子查询。

SELECT SUBSTRING_INDEX(username,'@',1) AS username, 
COUNT(username) as count, 
ROUND(
SUM(
CONVERT(SUBSTRING(contribution_score, -2), UNSIGNED INTEGER) + 
CONVERT(SUBSTRING(focused_score, -2), UNSIGNED INTEGER) + 
CONVERT(SUBSTRING(prepared_score, -2), UNSIGNED INTEGER) + 
CONVERT(SUBSTRING(work_score, -2), UNSIGNED INTEGER) 
)/COUNT(username)/76*100) 
as average, 

(SELECT COUNT(username) as days FROM logon WHERE logon.username=project_rubrics.username GROUP BY username) as username_count 

FROM project_rubrics 
GROUP BY username 
LIMIT 0, 90 
+0

不幸的是,这并没有奏效。它返回的子查询返回的错误超过1行。 – user2213304 2013-03-27 09:58:09

+0

这适用于我(不同的数据库,但相同的总体思路)。也许你在子查询中按语句指定表:SELECT COUNT(username)as days FROM logon WHERE logon.username = project_rubrics.username GROUP BY logon.username。 – Robbert 2013-03-27 14:54:46