Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Группировка записей из двух таблиц  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
Знатоки SQL-запросов в MS SQL, помогите сформировать запрос.
Имеется две таблицы:
Одна с полями Data_Zaezda, Marshrut, Id_Pochta
Вторая с полями Id_Pochta, Adress, Region
В первую таблицу попадают записи с датой и номером маршрута курьера и объектами на этом маршруте.
Во второй таблице адрес нахождения объекта.

Мне надо сформировать SQL-запрос и отобрать маршруты на которых был всего один объект.

Я делаю так и запрос выдает маршруты с одним объекты, сгруппировав по дате:

SQL.ADD('SELECT Data_Zaezda, Marshrut, COUNT(Id_Pochta) ');
SQL.ADD('FROM Zayavki ');
SQL.ADD('WHERE (Data_Zaezda BETWEEN :datPass1 AND :datPass2)');
SQL.ADD('GROUP BY Data_zaezda, Marshrut');
SQL.ADD('HAVING COUNT(Id_Pochta)=1');
SQL.ADD('ORDER BY Data_zaezda');

Но мне надо вывести еще адрес этого объекта. Как сделать все в одном запросе?
16 ноя 16, 19:02    [19901134]     Ответить | Цитировать Сообщить модератору
 Re: Группировка записей из двух таблиц  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 113
Можно, например, так:
SELECT Data_zaezda
      ,Marshrut
      ,Adress
  FROM (SELECT Data_Zaezda
              ,Marshrut
              ,MIN(Id_Pochta) Id_Pochta
          FROM Zayavki
         WHERE Data_Zaezda BETWEEN @datPass1 AND @datPass2
         GROUP BY Data_zaezda, Marshrut
        HAVING COUNT(Id_Pochta)=1) Z
       INNER JOIN [ТаблицаСАдресами] ON [ТаблицаСАдресами].Id_Pochta = Z.Id_Pochta
ORDER BY Data_zaezda


Т.е. ваш запрос оборачивается в подзапрос. Так как у Вас всегда только один идентификатор объекта, то его можно получить как MIN(Id_Pochta). Вот этот идентификатор фактически добавляется к вашему подзапросу, а потом по нему привязывается нужный адрес из второй таблицы.
17 ноя 16, 10:54    [19902511]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить