Фильтр SQL Данные сервера, используя соответствующие фильтрации - PullRequest
0 голосов
/ 09 апреля 2020

Я создал таблицу с именем [Damaged Item], которая содержит поврежденные элементы, и выглядит она так:

|  Item   |  Style    |  Date    |
+---------+-----------+----------+
|  A1     |    A      | 12/04/20 |
|         |    B      | 03/12/19 |

У меня есть другая таблица, которая поддерживает [Purchased Items].

[Закупленные предметы] отбросят предмет, если он удовлетворяет следующим условиям.

  1. Если предмет содержится в таблице поврежденных предметов, а Дата даты поврежденного предмета больше чем текущая дата.

  2. Если поле элемента внутри поврежденного элемента имеет значение NULL или '', то я должен проверить столбец Стиль. Если стиль приобретенных предметов равен поврежденному стилю, то я также сбрасываю эти значения, если дата элемента поврежденного товара больше текущей даты.

Обратите внимание, что если есть является предметом в таблице поврежденных предметов, тогда купленные предметы будут проверяться на предмет поврежденных предметов и проверять дату, и если дата поврежденного предмета больше текущей даты, я выбрасываю этот предмет еще, если предмета нет, а только стиль, то я проверка стиля с помощью стиля приобретенных товаров, проверка состояния даты и удаление записей. Если поврежденный элемент содержит данные, как указано выше, тогда я проверяю элемент, а также стиль.

Я ставлю левое соединение следующим образом.

[PurchasedItem] X 
LEFT JOIN [DamagedItem] D ON (X.ITNO = D.ITNO)
LEFT JOIN [DamagedItem] E ON (X.Style = E.Style)

Этот запрос (X.ITNO = D.ITNO) отбрасывается предметов, но со второго соединения он снова получает выпавшие предметы (как D.ITNO AS NULL).

Может ли кто-нибудь помочь мне сделать это?

1 Ответ

0 голосов
/ 09 апреля 2020

Если вы хотите отфильтровать поврежденные предметы, вы можете использовать not exists:

selet pi.*
from PurchasedItem pi
where not exists (select 1
                  from DamagedItem di
                  where di.ITNO = pi.ITNO and di.date > getdate()
                 ) and
      not exists (select 1
                  from DamagedItem di
                  where di.ITNO is null and
                        di.style = pi.style and
                        di.date > getdate()
                 );

Дата arithemti c выглядит странно (будущий урон?), Но это то, что вы просите .

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