【发布时间】:2013-12-13 11:08:42
【问题描述】:
我将尝试简要描述问题。 我有(为了简化)2 个服务器(MSSQL 和 MYSQL),里面有学生数据和系统成绩表。
我正在尝试比较每个学生在一个查询中的 GRADE AND Expected(等级),如下所述
学生表 (MS SQL)
+---------+----------+-------------+
|学生 |等级 |预期 |
+----------+----------+-------------+
|迈克 |一个 |一个 |
+----------+----------+-------------+
|弗兰克 | C | B |
+----------+----------+-------------+
成绩表 (MySQL)
+-------+-----+
|等级 |瓦尔 |
+--------+-----+
|一个 | 6 |
+--------+-----+
| B | 5 |
+--------+-----+
| C | 4 |
+--------+-----+
预期结果:
+----------+----------+-------------+---------- --------+
|学生 |等级 |预期 |成就 |
+----------+----------+--------------+------------- ----+
|迈克 |一个 |一个 |达到目标 |
+----------+----------+--------------+------------- ----+
|弗兰克 | C | B |低于目标 |
+----------+----------+--------------+------------- ----+
查询思路(草图):
选择学生、等级、预期
CASE ((SELECT * FROM openquery(MYSQL,'SELECT Val WHERE Grade=GRADE'))>(SELECT * FROM openquery(MYSQL,'SELECT Val WHERE Grade=Expected')))
比“高于目标”
其他
CASE ((SELECT * FROM openquery(MYSQL,'SELECT Val WHERE Grade=GRADE'))
比“低于目标”
ELSE '目标'
结束
END AS 成就
来自学生
我不确定,我怀疑,经过研究,不可能通过 参数(GRADE 或 Expected),但希望有人 可能会解决这个问题,并可能会建议一些方法来实现这一点。
基本上问题是:如何进行这种比较?
最好的方法是什么?
我有大约 3k 名学生要获得(这里是简化的)结果。
另一种方法是在 PHP 中处理这种比较,但这需要另一个连接、额外的查询和循环遍历所有学生。
我认为单个查询(带有比较)会更有效(而且肯定更具挑战性;))
提前感谢您的帮助。
(对不起,我的编辑技术不好)
【问题讨论】:
标签: mysql sql sql-server-2008 optimization