我们在系统中有如下数据
用户数据 经验 教育 工作申请
这些数据将在整个应用程序中使用,并且这些数据也附加了很少的逻辑。 为了确保这些数据在整个应用程序中是一致的,我想创建相同的View并计算这些数据然后在不同的地方使用此视图。
现在的问题是,由于细节表彼此之间没有关系,我应该如何创建视图
从绩效角度来看,哪一种是最好的方法?
例如
SELECT
UserId,
COUNT(*) AS ExperienceCount,
0 AS EducationCount
FROM User
INNER JOIN Experience ON user_id = User_Id
GROUP BY
UserId
UNION ALL
SELECT
UserId,
0,
COUNT(*)
FROM User
INNER JOIN Education ON user_id = user_id
GROUP BY
UserId
然后按此分组以获得每个用户一行中所有这些数据的摘要。
答案 0 :(得分:0)
编写您指定的查询的一种方法可能是:
typeof foo.bar != "undefined"
这也可以写成SELECT UserId, SUM(ExperienceCount), SUM(EducationCount
FROM ((SELECT UserId, COUNT(*) as ExperienceCount, 0 AS EducationCount
FROM Experience
GROUP BY UserId
) UNION ALL
(SELECT UserId, 0, COUNT(*)
GROUP BY UserId
)
) u
GROUP BY UserId;
,FULL JOIN
,并使用相关的子查询。根据您的数据,这些中的每一种都适用于不同的情况。