【发布时间】:2017-12-15 22:51:24
【问题描述】:
如何将这三个查询合并为一个?
1.
SELECT "Skills"."name", "Skills"."id", "TrainerScores"."fellow_uid", MIN("TrainerScores"."score") AS "score"
FROM "TrainerScores"
INNER JOIN "Skills" ON "TrainerScores"."skill_id" = "Skills"."id"
WHERE "TrainerScores"."fellow_uid" = 'google:105697533513134511631'
AND DATE("TrainerScores"."created_at") BETWEEN '2015-10-01' AND '2015-10-30'
GROUP BY "Skills"."name", "Skills"."id", "TrainerScores"."fellow_uid"
2.
Select "Skills"."name", "Skills"."id", MIN("PeerScores"."score") AS "score"
FROM "PeerScores"
LEFT OUTER JOIN "Skills" ON "PeerScores"."skill_id" = "Skills"."id"
WHERE "PeerScores"."evaluatee_uid" = 'google:105697533513134511631'
AND DATE("PeerScores"."created_at") BETWEEN '2015-10-01' AND '2015-10-30'
GROUP BY "Skills"."name", "Skills"."id"
3.
Select "Skills"."name", "Skills"."id", MIN("SelfScores"."score") AS "score"
FROM "SelfScores"
LEFT OUTER JOIN "Skills" ON "SelfScores"."skill_id" = "Skills"."id"
WHERE "SelfScores"."fellow_uid" = 'google:105697533513134511631'
AND DATE("SelfScores"."created_at") BETWEEN '2015-10-01' AND '2015-10-30'
GROUP BY "Skills"."name", "Skills"."id"
我想将其用作报告,并且我不想在任何时候都调用每个查询来获取数据。
【问题讨论】:
-
@AyoolaSolmon 我不确定是否可以加入这三个查询,但是使用 sequelize 可以使用回调在同一个函数中获得所有三个查询的结果。
-
@LucasCosta 你觉得我可以用续集来解决这个问题
-
为什么不想只使用这三个查询呢?您希望通过组合它们来解决什么问题?
-
@CraigRinger 我想将每个表的最低分数表示为水平条形图,我想使用一次而不是三次获取数据
-
简单地联合所有?在 LEFT JOIN 之前的三个分数表之间。或者一个大(双)UNION ALL。
标签: sql node.js postgresql sequelize.js