我有两个从C#winform运行的SQL查询,我想将它们合并。
第一个是:
SELECT * FROM ES_TOOL INNER JOIN ES_HARDWARE ON ES_HARDWARE.eshw_ID = ES_TOOL.ESTOOL_HARDWARE INNER JOIN ES_PAYMENT on ES_payment.espay_id = es_TOOL.estool_payment
这列出了所有工具及其相关的付款和硬件要求。
然后使用ac#for loop在第一个查询返回的每个记录上运行第二个记录:
SELECT avg(a.esmrk_value) from ES_MARK a Inner Join ES_TOOL_CHAPTER b on a.esmark_tool_chapter= b.estch_id WHERE b.estch_tool=@tool
对于每种工具,这将返回它们在es_mark表中获得的平均等级。
NB标志被授予工具的各个“章节”。因此,要查找工具的所有标记,我们需要查看ES_TOOL_CHAPTER表以获取工具章节列表。工具章是在ES_MARK表中接收标记的工具。
我已经尝试了分组和更多的联接,但是现在我变得更加困惑,因此,我希望在此问题上有所帮助。我基本上是在寻找一个查询,该查询将返回第一个查询的所有结果,并为平均分数增加一列。
谢谢。
编辑:@tool代表工具ID。
如果要与平均查询一起检索平均成绩:
SELECT * FROM ES_TOOL INNER JOIN ES_HARDWARE ON ES_HARDWARE.eshw_ID = ES_TOOL.ESTOOL_HARDWARE INNER JOIN ES_PAYMENT on ES_payment.espay_id = es_TOOL.estool_payment LEFT JOIN ( SELECT b.estch_tool, avg(a.esmrk_value) AvgValue FROM ES_MARK a Inner Join ES_TOOL_CHAPTER b ON a.esmark_tool_chapter = b.estch_id GROUP BY b.estch_tool ) g ON ES_TOOL.ToolColumn = g.estch_tool
用ToolColumn正确的列名替换。
ToolColumn
注意:SELECT *不建议,请阅读此问题。
SELECT *