Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 July 24

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
По сути надо найти пересечение списка нужных товаров с товарами чека, и убедится, что ни один товар не потерялся при этом.
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
Это и считается через count(*)
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
да ну, плохо это
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Нереляционненько.
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
тогда генерируйте динамический запрос, чтоб в нем собиралось столько
exists (), сколько позиций указано, вероятно, но я не уверен, что это быстрее будет работать.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Alex
тогда генерируйте динамический запрос, чтоб в нем собиралось столько
exists (), сколько позиций указано, вероятно, но я не уверен, что это быстрее будет работать.
Это тоже плохо.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Ладно, придумаю напишу...
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
тогда ждём правильный ответ
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
Я через count(*) обычно делаю, интересно, как можно быстрее заставить работать.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Alex
Я через count(*) обычно делаю, интересно, как можно быстрее заставить работать.
Ну, быстрее -- это не про этот запрос...
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
ладно
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
потом
источник

А

Артем in SqlCom.ru - Стиль жизни SQL
Alex
Я через count(*) обычно делаю, интересно, как можно быстрее заставить работать.
Через count(1) :)
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Артем
Через count(1) :)
Нет разницы никакой.
источник

А

Артем in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Нет разницы никакой.
Есть
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Артем
Есть
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Ну и на инглише поподробнее
https://www.sqlhammer.com/transact-sql-count-vs-countcolumn-vs-count1/
источник

YS

Yaroslav Schekin in SqlCom.ru - Стиль жизни SQL
Количество сканирований и логических чтений для обоих запросов абсолютно идентично. Значит оба варианта равноценны по производительности для SQL Server.

Non sequitur. Т.е., в общем случае, просто чушь.
Но в данном конкретном вывод всё равно правильный, а почему — написано во второй ссылке. ;)
источник

VS

Vasily S. in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Нереляционненько.
Этот запрос - если Я правильно понял, то этот запрос - Реляционное деление. Примерно так:

with T as
(select X.v
from (values (0), (1), (5), (7), (13)) as X(v))

, A as
(select X.id, X.v
from (values (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7)
          , (1, 8), (1, 9), (1, 10), (1, 11), (1, 12), (1, 13), (1, null)
          , (2, 1), (2, 5), (2, 13)
          , (3, 0), (3, 3)
          , (4, 0), (4, 1), (4, 5), (4, 7), (4, 13), (4, null)
          , (5, null)) as X(id, v))
         
, Q as
(select x.id, x.v
from A as x
inner join T as t
on x.v = t.v)

select a.id, a.v
from A as a
where exists(select null as v
from Q as x
where x.id = a.id
and not exists(select null as v
from T as t
left join (select d.id, d.v from Q as d where d.id = x.id) as q
on t.v = q.v
where q.v is null))      

Поясню, T - выборка позиций по чекам, A - сами чеки, соответственно выводится все чеки в которых есть исключительно все позиции T со всеми данными. Можно  дальше с этим иметь дело. Сортировки никакой нет, но если добавить подсказку по типу force order, то могут и появится промежуточные для hash/merge джойнов. Но не суть. dbfiddle.uk
источник
2020 July 25

А

Андрій in SqlCom.ru - Стиль жизни SQL
Ребята, а почему символ \ не отображается?
источник