Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос на выборку отсутсвующих данных / 5 сообщений из 5, страница 1 из 1
25.10.2018, 21:40
    #39723121
ivgeorge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку отсутсвующих данных
Всем доброго времени суток!
Я только начал осваивать 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 и селектов вообще ни к чему не привели ((

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

Спасибо!!!
...
Рейтинг: 0 / 0
25.10.2018, 21:46
    #39723122
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку отсутсвующих данных
ivgeorge,
Наверное, Вам нужно что-то такое
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT A.ID
 FROM TABLEA A
   WHERE NOT EXISTS
    (
      SELECT 1 FROM TABLEB B
        WHERE A.ID=B.ID
    )
...
Рейтинг: 0 / 0
25.10.2018, 22:01
    #39723132
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку отсутсвующих данных
Код: sql
1.
2.
3.
4.
5.
6.
7.
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]);
...
Рейтинг: 0 / 0
25.10.2018, 22:06
    #39723138
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку отсутсвующих данных
ivgeorgeдвижения по каким артикулам не было вообще в каждый из этих дней

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

В любом случае вам надо отталкиваться от дней (дат) при составлении запроса, и для этого определиться, либо вы выбираете из из существующей таблицы либо добавлять этот "календарик" в запрос.
...
Рейтинг: 0 / 0
26.10.2018, 09:28
    #39723284
ivgeorge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку отсутсвующих данных
PizzaPizza,

В данном случае, разницы нет никакой, так как есть гарантия того, что движения пргисходят 365 дней в году. Хотя наверное, встает вопрос, как правильнее и производительнее
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос на выборку отсутсвующих данных / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]