admin

合并SQL查询

sql

我有两个从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。


阅读 209

收藏
2021-06-07

共1个答案

admin

如果要与平均查询一起检索平均成绩:

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正确的列名替换。

注意:SELECT *不建议,请阅读此问题

2021-06-07