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

Откуда:
Сообщений: 6
Всем доброго времени суток!
Я только начал осваивать sql запросы, поэтому не судите строго. Завис с одним запросом, и без помощи, видимо не разберусь.

Дано: таблицы a и b

Таблица а - таблица - справочник со всеми артикулами, котопые есть в производстве
Таблица b - событийная таблица движений артикулов.

Используемые столбцы в запросе:
a.id, b.id, b.date

Суть проблемы:
В таблицу b попадают все движения по всем артикулам за каждый день, следующего вида:

id,date,value.

Мне необходимо сформировать запрос, который бы формировал представление, отражающие, движения по каким артикулам не было вообще в каждый из этих дней, то есть что-то типа:

b.date,a.id

Знаний хватило только на right join с использованием предиката where a.id is null.
Но увы, мне выводятся артикула, но вместо даты - ожидаемо, красуется null.
Различные комбинации других join и селектов вообще ни к чему не привели ((

Если такой запрос не слишком сложный для понимания и реализации - очень прошу помочь напиаться опытом по этой теме!!!

Спасибо!!!
25 окт 18, 21:40    [21715411]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку отсутсвующих данных  [new]
londinium
Member

Откуда: Киев
Сообщений: 1138
ivgeorge,
Наверное, Вам нужно что-то такое
SELECT A.ID
 FROM TABLEA A
   WHERE NOT EXISTS
    (
      SELECT 1 FROM TABLEB B
        WHERE A.ID=B.ID
    )
25 окт 18, 21:46    [21715412]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку отсутсвующих данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9123
select
 a.id, t.date
from
 a cross join
 (select distinct [date] from b) t
where
 not exists(select 1 from b where id = a.id and [date] = t.[date]);
25 окт 18, 22:01    [21715427]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку отсутсвующих данных  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
ivgeorge
движения по каким артикулам не было вообще в каждый из этих дней


Я бы начал с определений.
Например, что означает "в каждый из этих дней"? Это дни, которые у вас присутствуют в таблице движений артикулов, или это все календарные дни, даже если их нет (вообще никаких движений не было в какой то день) в таблице?

В любом случае вам надо отталкиваться от дней (дат) при составлении запроса, и для этого определиться, либо вы выбираете из из существующей таблицы либо добавлять этот "календарик" в запрос.
25 окт 18, 22:06    [21715435]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку отсутсвующих данных  [new]
ivgeorge
Member

Откуда:
Сообщений: 6
PizzaPizza,

В данном случае, разницы нет никакой, так как есть гарантия того, что движения пргисходят 365 дней в году. Хотя наверное, встает вопрос, как правильнее и производительнее
26 окт 18, 09:28    [21715644]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить