Size: a a a

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

2020 May 19

J

Jegors in SqlCom.ru - Стиль жизни SQL
Привет! Подскажите, как написать оптимально запрос.
Мой работает, но мне он кажется корявым:

WITH temp AS (
  SELECT COUNT(*) AS tags_count
  FROM tags
)

SELECT goods.id, goods.name  
FROM goods
JOIN tags_goods
 ON goods.id = tags_goods.goods_id
CROSS JOIN temp
GROUP BY goods.id
HAVING COUNT(tag_id) = tags_count;

Здесь мне нужно выбрать все товары, у которых есть все теги. Таблиц три: товары, тэги и связка.
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Andry
Пишет за пару часов
чего смешного?
источник

A

Andry in SqlCom.ru - Стиль жизни SQL
Sergey
чего смешного?
Ничего я в полемику вструпать не буду по этому поводу - решение логичное быстро написать програмку которая месить эксели будет - это лучшее решение
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Andry
Ничего я в полемику вструпать не буду по этому поводу - решение логичное быстро написать програмку которая месить эксели будет - это лучшее решение
на C# например..
источник

A

Andry in SqlCom.ru - Стиль жизни SQL
Можно написать коннектор и для SSIS который тоже самое делать будет - но это больше по времени займет
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Andry
Можно написать коннектор и для SSIS который тоже самое делать будет - но это больше по времени займет
неадекватная просто реакция.. бывает, что ж поделать) люди разные
источник

A

Andry in SqlCom.ru - Стиль жизни SQL
Просто разработчик - это сильно сказано - слишком простая задача
источник

A

Andry in SqlCom.ru - Стиль жизни SQL
Можно сделать на голанг кстати - но я бы несоветовал
источник

SS

Sergey S in SqlCom.ru - Стиль жизни SQL
А чтобы из 1с уже сразу в нужном формате получать? если 1с8, то там любой отчет в линейном виде вывести - это 10 минут работу
источник

S

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

А

Артем in SqlCom.ru - Стиль жизни SQL
Jegors
Привет! Подскажите, как написать оптимально запрос.
Мой работает, но мне он кажется корявым:

WITH temp AS (
  SELECT COUNT(*) AS tags_count
  FROM tags
)

SELECT goods.id, goods.name  
FROM goods
JOIN tags_goods
 ON goods.id = tags_goods.goods_id
CROSS JOIN temp
GROUP BY goods.id
HAVING COUNT(tag_id) = tags_count;

Здесь мне нужно выбрать все товары, у которых есть все теги. Таблиц три: товары, тэги и связка.
Алгоритм верный
источник

J

Jegors in SqlCom.ru - Стиль жизни SQL
Переписал так:

SELECT goods.id, goods.name
FROM goods
JOIN tags_goods
 ON goods.id = tags_goods.goods_id
GROUP BY goods.id
HAVING COUNT(tag_id) = (SELECT COUNT(*) AS tags_count
  FROM tags);
источник

Д

Дмитрий in SqlCom.ru - Стиль жизни SQL
Jegors
Привет! Подскажите, как написать оптимально запрос.
Мой работает, но мне он кажется корявым:

WITH temp AS (
  SELECT COUNT(*) AS tags_count
  FROM tags
)

SELECT goods.id, goods.name  
FROM goods
JOIN tags_goods
 ON goods.id = tags_goods.goods_id
CROSS JOIN temp
GROUP BY goods.id
HAVING COUNT(tag_id) = tags_count;

Здесь мне нужно выбрать все товары, у которых есть все теги. Таблиц три: товары, тэги и связка.
Используй оконную функцию.
источник

P

Petr in SqlCom.ru - Стиль жизни SQL
Sergey
Всем привет! Друзья, кто-нибудь сталкивался с такой темой.. Из 1C выгрузили отчеты в excel документ, в виде таблицы во вложении.. и дальше ее нужно привести к виду обычной таблицы и загрузить в хранилище через SSIS. Но проблема в том, что выгрузка формата такого, что поле номенклатура выделяется только цветом, у нас есть решение на макросах VBA, но если 100 таблиц в по 1 млн то боюсь мы далеко так не уедем.. Есть ли какое решение данного вопроса? может кто делал подобное, 1С вроде геморрой тот еще
По опыту самое быстрое для обработки экселя - ковертить его в csv а потом грузить в БД, но цвет ячеек и  форматирование можно захватить только используя либы офиса - а это всегда очень медленно...
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Petr
По опыту самое быстрое для обработки экселя - ковертить его в csv а потом грузить в БД, но цвет ячеек и  форматирование можно захватить только используя либы офиса - а это всегда очень медленно...
Понял, спасибо
источник

I

Igor in SqlCom.ru - Стиль жизни SQL
Sergey
я понимаю, что идеальный вариант брать прям из 1С
А Вы не просили чтобы Вам нормальную таблицу без группировки по номенклатуре выгружали, в 1С это только настройка отчета?
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Igor
А Вы не просили чтобы Вам нормальную таблицу без группировки по номенклатуре выгружали, в 1С это только настройка отчета?
Не все так просто как вы хотите..
источник

I

Igor in SqlCom.ru - Стиль жизни SQL
Sergey
Не все так просто как вы хотите..
Жаль, это был бы самый простой вариант
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Переслано от Max Chistyakov
А какой смысл имеет право EXECUTE для user defined data type? https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-type-permissions-transact-sql?view=sql-server-ver15#remarks
Не вижу ничего, что можно было бы делать им в data type https://docs.microsoft.com/en-us/sql/t-sql/statements/create-type-transact-sql?view=sql-server-ver15
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Переслано от Max Chistyakov
Это на тот случай, если тип берём из dll сборки, и этот тип что-то там химичит при возврате?
источник