Слияние SQL-запросов - PullRequest
       10

Слияние SQL-запросов

2 голосов
/ 21 февраля 2011

У меня есть два SQL-запроса, которые я выполняю из winform формы C #, и я хочу объединить их.

Первый:

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:

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 представляет идентификатор инструмента.

1 Ответ

3 голосов
/ 21 февраля 2011

Если вы хотите получить среднюю оценку вместе с основным запросом:

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 * не рекомендуетсяПожалуйста, прочитайте Этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...