Exist возврат товара: Возврат товара и денег на Экзист

Возврат товара и денег на Экзист

Интернет-магазин Exist торгует недорогими запчастями для иномарок, благодаря чему пользуется большой популярностью.Однако бывают ситуации, когда выбранная деталь по каким-то причинам не подошла или оказалась дефектной, после чего покупатель желает вернуть ее и получить обратно оплату.

Далее мы расскажем:

  • когда случаях возможен возврат товара;
  • как вернуть товар;
  • как вернуть деньги за дефектную запчасть;
  • как вернуть деньги за неправильно выбранный товар;
  • что делать, если работники офиса отказываются принимать товар обратно и возвращать деньги.

В каких случаях возможен возврат товара

Содержание

  • В каких случаях возможен возврат товара
  • Как вернуть товар в магазин
  • В каких ситуациях вы не сможете вернуть деталь
  • Что делать, если работники магазина отказываются забирать товар и возвращать за него деньги
  • Как снять деньги с баланса
  • Способы возврата денег

Все вопросы, связанные с возвратом товара, регулируются Законом о Защите Прав Потребителей (ЗоЗПП). Этот закон предусматривает ответственность производителя и продавца как за качество товара и соответствие заявленным требованиям, так и правильное информирование покупателя обо всех характеристиках и назначении продукции.

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

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

Как вернуть товар в магазин

Менеджеры офиса Экзист информируют клиентов, что возврат запчастей по причине несоответствия автомобилю возможен лишь в том случае, если деталь выбирал представитель магазина по собственному каталогу.

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

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

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

В каких ситуациях вы не сможете вернуть деталь

Причин, по которым представители компании Exist могут отказаться принять у вас запчасть или расходник, несколько:

  • на детали есть видимые повреждения или следы эксплуатации;
  • картонная упаковка сильно повреждена;
  • вышел срок, отведенный законом на возврат детали.

Что делать, если работники магазина отказываются забирать товар и возвращать за него деньги

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

Однако мы рекомендуем сначала скачать и распечатать текст закона, затем показать работникам пункт 5 статьи 18 ЗоЗПП, по которому отсутствие у вас чека или квитанции не является основанием для отказа.

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

Как снять деньги с баланса

Нередко после совершения покупки на вашем счете в личном кабинете на сайте Экзист остается какая-то сумма (баланс), которая может быть использована для оплаты дальнейших покупок.

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

Вам могут отказать лишь в одном случае – если вы просите вывести деньги, но по каким-то причинам не хотите писать заявление.

Способы возврата денег

Сотрудники магазина могут провести возврат денег такими способами, как:

  • выдача наличных;
  • перечисление на счет, с которого была оплачена покупка;
  • перечисление денег на банковскую карту;
  • перевод на личный счет.

Выдача наличных – наиболее популярный способ возврата денег. Возврат денег может занимать до 10 дней, в зависимости от финансовой ситуации офиса Exist. Если же вы оплачивали покупку с помощью безналичного расчета, то сотрудники магазина могут отказать в выдаче наличных, вернув деньги на счет в установленный законом срок.

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

Вам также могут вернуть деньги на счет в магазине, пополнив таким образом баланс. В любом случае, в течение 10 дней с момента сдачи бракованной или рекомендованной менеджером магазина запчасти вам будет выплачена вся ее стоимость, если же вы самостоятельно выбрали запчасть, то с вас удержат стоимость ее доставки от офиса до склада.

Как отменить заказ и вернуть запчасть в Exist

Главная » Exist

Рубрика: Exist

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

Условия возврата товара в Exist

Закон «О защите прав потребителей» регламентирует любые вопросы, касающиеся возврата покупки как в обычный, так и в интернет-магазин.

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

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

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

Менеджеры интернет-магазина Exist сообщают покупателям о том, что возврат товара, если он не подошел и не соответствует конкретному транспортному средству, допустим только тогда, когда делать выбор помогал сам сотрудник компании, изучая их же каталог.

Когда клиент желает вернуть неподошедшую запчасть, он должен принести ее в офис обслуживания для осмотра и проверки на предмет повреждений и брака.

Если покупка возвращается или обменивается, потому что она оказалась бракованной, сотрудник Exist также проверит, нет ли на ней дефектов, возникших недавно. После проверки покупатель получит специальный бланк, а также образец заявления на возврат заказа (документ составляется письменно).

Магазин Exist имеет право требовать от покупателя компенсацию расходов на транспортировку товара, если он выбирался последним самостоятельно, а затем последовал отказ. Когда запчасть выбирал сотрудник Экзиста, клиенту возмещается вся потраченная им сумма.

Существуют также причины, по которым компания Exist может отказать покупателю, желающему вернуть купленный товар:

  • автозапчасть явно повреждена или имеет следы использования;
  • упаковка товара сильно испорчена;
  • истек срок, в течение которого по закону возможен возврат заказа.

Инструкция по возврату

Итак, как производится возврат заказа в интернет-магазин Exist:

  1. Покупатель посещает офис обслуживания Экзист, имея при себе возвращаемый товар.
  2. Обращается к сотруднику компании.
  3. Последний оформляет процедуру возврата в соответствии с действующим законодательством и правилами организации Exist.

Запчасть должна быть в идеальном состоянии – это является обязательным условием, соблюдая которое, покупатель сможет вернуть покупку. Номер заказа пишется на упаковке, но иногда цифры могут быть нанесены прямо на изделие.

Клиент, возвращающий заказ, обязан иметь при себе следующую документацию:

  • заказ-наряд на установку детали на транспортное средство;
  • сертификат соответствия сервиса такому типу услуг;
  • товарную квитанцию, подтверждающую факт оплаты услуг;
  • экспертное заключение.

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

В заказ-наряд входят:

  • паспортные данные клиента;
  • номер автомобиля, марка и другие характеристики;
  • цена услуг по установке запчасти;
  • VIN-код транспортного средства.

Отмена заказа

Отменить сделанный в интернет-магазине Exist заказ можно одним из трех способов:

  • позвонить по номеру +7(495)765-48-42 и связаться с менеджером, который поможет осуществить отмену, а также проконсультирует клиента по всем возникшим вопросам;
  • создать запрос на снятие конкретной позиции из заказа в Личном кабинете пользователя на сайте exist.ru;
  • написать сообщение на электронный адрес компании [email protected].

Быстро отказаться от заказа в Экзисте без каких-либо расходов со стороны покупателя возможно только до отправки посылки со склада. В противном случае процедура будет длиться дольше, а клиенту придется заплатить за транспортировку товара.

Как возвращаются деньги

Работники Exist возвращают клиентам деньги следующими способами:

  • наличными;
  • на счет, с которого вносился платеж;
  • на банковскую карточку;
  • на личный счет покупателя.

Важно! Выдача денег наличными – самый популярный вариант. Сама процедура может длиться до десяти дней. Если товар оплачивался безналичным способом, скорее всего, средства вернутся на указанный счет, а в возврате наличными откажут.

На карту оплата возвращается, только если с нее она и была списана. Как бы то ни было, в течение десяти дней со дня сдачи заказа в Экзист покупателю выплачивается его полная стоимость (кроме случаев, когда изделие выбиралось клиентом самостоятельно – тогда с него будет удержана цена транспортировки посылки из офиса обслуживания на склад).

sql — возвращать строки, только если существуют 2 значения

Задавать вопрос

спросил

Изменено 7 лет, 9 месяцев назад

Просмотрено 1к раз

Мне нужно вернуть список имен клиентов из сводной таблицы покупок, но только в том случае, если клиент купил 2 определенных товара в рамках 1 транзакции.

Например, таблица «транзакция»

╔══════════════╦════════╦═════════════◐════╦══
║ Имя Клиента ║ Товар ║ Транзакция № ║ Сумма ║
╠══════════════╬════════╬═══════════════╬══
║ Кузнец ║ Молоток ║ 1 ║ 50.00 ║
║ Смит ║ Гвоздь ║ 1 ║ 4.00 ║
║ Смит ║ Винт ║ 1 ║ 5.00 ║
║ Коричневый ║ Гвоздь ║ 2 ║ 4.00 ║
║ Коричневый ║ Винт ║ 2 ║ 4,00 ║
║ Джонс ║ Хаммер ║ 3 ║ 50.00 ║
║ Джонс ║ Винт ║ 3 ║ 4.00 ║
║ Смит ║ Гвоздь ║ 4 ║ 50.00 ║
║ Кузнец ║ Молоток ║ 4 ║ 4.00 ║
║ Смит ║ Шуруп ║ 5 ║ 5.00 ║
╚══════════════╩════════╩══════════════╩═══
 

Я хочу вернуть только клиентов, которые купили молоток и винт в одной сделке. Неважно, какие другие предметы были куплены в той же сделке, мне нужны детали только для молотка и винта, и только если и молоток, и винт присутствовали в одной и той же сделке.

Таким образом, нужно вернуть только вышеуказанное:

╔══════════════╦════════╦═════════════◐════╦══
║ Имя Клиента ║ Товар ║ Транзакция № ║ Сумма ║
╠══════════════╬════════╬═══════════════╬══
║ Кузнец ║ Молоток ║ 1 ║ 50. 00 ║
║ Смит ║ Винт ║ 1 ║ 5.00 ║
╚══════════════╩════════╩══════════════╩═══
 

Поскольку только транзакция 1 содержала и молоток, и винт в одной транзакции.

  • sql
  • sql-сервер-2008

1

Используйте дополнительный выбор для поиска транзакций, включая Hammer и Screw:

 выберите CustomerName, Item, Transaction #, Amount
от покупки
где Транзакция# в (выберите Транзакцию# из покупки
                       где Item in («Молоток», «Винт»)
                       группировать по номеру транзакции
                       имея количество (отдельный предмет) = 2)
  и Предмет внутри («Молоток», «Винт»)
 

Удалить последнюю строку, если необходимо вернуть строку с гвоздями!

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Разница между EXISTS и IN в SQL?

спросил

Изменено 10 дней назад

Просмотрено 625 тысяч раз

В чем разница между предложением EXISTS и IN в SQL?

Когда мы должны использовать EXISTS , и когда мы должны использовать IN ?

  • sql
  • существует
  • sql-in

Ключевое слово exists можно использовать таким образом, но на самом деле оно предназначено для того, чтобы избежать подсчета:

 --этот оператор должен проверять всю таблицу
выберите количество (*) из [таблицы], где . ..
--это утверждение истинно, как только найдено одно совпадение
существует ( выберите * из [таблицы], где ... )
 

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

в лучше всего использовать, если у вас есть статический список для передачи:

 выберите * из [таблицы]
 где [поле] в (1, 2, 3)
 

Когда у вас есть таблица в операторе в , имеет смысл использовать соединение , но в основном это не имеет значения. Оптимизатор запросов должен возвращать один и тот же план в любом случае. В некоторых реализациях (в основном более старых, таких как Microsoft SQL Server 2000) запросы в всегда будут получать план вложенного соединения, тогда как запросы на соединение будут использовать вложенные, слияние или хеширование в зависимости от ситуации. Более современные реализации умнее и могут скорректировать план даже при в используется.

6

EXISTS сообщит вам, дал ли запрос какие-либо результаты. например:

 ВЫБЕРИТЕ *
ОТ Заказы о
ГДЕ СУЩЕСТВУЕТ (
    ВЫБИРАТЬ *
    ИЗ продуктов р
    ГДЕ p.ProductNumber = o.ProductNumber)
 

IN используется для сравнения одного значения с несколькими и может использовать литеральные значения, например:

 SELECT *
ОТ заказов
ГДЕ ProductNumber В (1, 10, 100)
 

Вы также можете использовать результаты запроса с предложением IN , например:

 SELECT *
ОТ заказов
ГДЕ ProductNumber В (
    ВЫБЕРИТЕ номер продукта
    ИЗ продуктов
    ГДЕ ProductInventoryQuantity > 0)
 

2

На основе оптимизатора правил :

  • EXISTS намного быстрее, чем IN , когда результаты подзапроса очень велики.
  • В быстрее, чем EXISTS , когда результаты подзапроса очень малы.

На основе оптимизатора затрат :

  • Нет никакой разницы.

9

Я предполагаю, что вы знаете, что они делают, и поэтому используются по-разному, поэтому я собираюсь понять ваш вопрос как: когда было бы неплохо переписать SQL для использования IN вместо EXISTS или наоборот .

Это верное предположение?


Изменить : Причина, по которой я спрашиваю, заключается в том, что во многих случаях вы можете переписать SQL на основе IN, чтобы вместо этого использовать EXISTS, и наоборот, и для некоторых механизмов баз данных оптимизатор запросов будет обрабатывать два по-разному. .

Например:

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ СУЩЕСТВУЕТ (
    ВЫБИРАТЬ *
    ОТ заказов
    ГДЕ Orders.CustomerID = Customers.ID
)
 

можно переписать в:

 SELECT *
ОТ клиентов
ГДЕ ИДЕНТИФИКАТОР (
    ВЫБЕРИТЕ идентификатор клиента
    ОТ заказов
)
 

или с присоединением:

 SELECT Customers. *
ОТ клиентов
    INNER JOIN Orders ON Customers.ID = Orders.CustomerID
 

Таким образом, мой вопрос остается в силе, интересуется ли оригинальный плакат тем, что делает IN и EXISTS и, следовательно, как его использовать, или он спрашивает, следует ли переписать SQL, используя IN, чтобы вместо этого использовать EXISTS, или наоборот, будет хорошим идея?

6

  1. EXISTS намного быстрее, чем IN , когда результаты подзапроса очень велики.
    IN быстрее, чем EXISTS , когда результаты подзапроса очень малы.

     CREATE TABLE t1 (id INT, title VARCHAR(20), someIntCol INT)
    ИДТИ
    CREATE TABLE t2 (id INT, t1Id INT, someData VARCHAR(20))
    ИДТИ
    ВСТАВЬТЕ В t1
    ВЫБЕРИТЕ 1, 'название 1', 5 ОБЪЕДИНИТЬ ВСЕ
    ВЫБЕРИТЕ 2, 'заголовок 2', 5 ОБЪЕДИНИТЬ ВСЕ
    ВЫБЕРИТЕ 3, 'название 3', 5 ОБЪЕДИНИТЬ ВСЕ
    ВЫБЕРИТЕ 4, 'название 4', 5 ОБЪЕДИНИТЬ ВСЕ
    SELECT null, 'заголовок 5', 5 UNION ALL
    ВЫБЕРИТЕ ноль, 'название 6', 5
    ВСТАВЬТЕ В t2
    ВЫБРАТЬ 1, 1, «данные 1» ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ 2, 1, «данные 2» ОБЪЕДИНИТЬ ВСЕ
    ВЫБЕРИТЕ 3, 2, «данные 3» ОБЪЕДИНЕНИЕ ВСЕХ
    ВЫБРАТЬ 4, 3, «данные 4» ОБЪЕДИНИТЬ ВСЕ
    ВЫБЕРИТЕ 5, 3, 'данные 5' ОБЪЕДИНЕНИЕ ВСЕХ
    ВЫБЕРИТЕ 6, 3, «данные 6» ОБЪЕДИНЕНИЕ ВСЕХ
    ВЫБЕРИТЕ 7, 4, «данные 7» ОБЪЕДИНЕНИЕ ВСЕХ
    SELECT 8, null, 'данные 8' UNION ALL
    ВЫБЕРИТЕ 9, 6, 'данные 9' ОБЪЕДИНЕНИЕ ВСЕХ
    ВЫБЕРИТЕ 10, 6, «данные 10» ОБЪЕДИНЕНИЕ ВСЕХ
    ВЫБЕРИТЕ 11, 8, «данные 11»
     
  2. Запрос 1

     ВЫБЕРИТЕ
    ОТ t1
    ГДЕ НЕ СУЩЕСТВУЕТ (SELECT * FROM t2 WHERE t1. id = t2.t1id)
     

    Запрос 2

     ВЫБЕРИТЕ t1.*
    ОТ t1
    ГДЕ t1.id не в (ВЫБЕРИТЕ t2.t1id ИЗ t2 )
     

    Если в t1 ваш идентификатор имеет нулевое значение, то запрос 1 найдет их, но запрос 2 не может найти нулевые параметры.

    то есть IN ничего не может сравнивать с нулевым значением, поэтому он не имеет результата для нулевого значения, но EXISTS может сравнивать все с нулевым значением.

3

Если вы используете оператор IN , механизм SQL просканирует все записи, извлеченные из внутреннего запроса. С другой стороны, если мы используем EXISTS , механизм SQL остановит процесс сканирования, как только найдет совпадение.

0

IN поддерживает только отношения равенства (или неравенство, если ему предшествует NOT ).
Это синоним = любой / = какой-то , например

 выберите *
с t1
где x in (выберите x из t2)
;
 

EXISTS поддерживает различные типы отношений, которые нельзя выразить с помощью IN , например. –

 выбрать *
с t1
где существует (выберите null
                  от т2
                  где t2.x=t1.x
                        и t2.y>t1.y
                        и t2.z как '℅' || t1.z || '℅'
                  )
;
 

Якобы производительность и технические различия между EXISTS и IN могут быть результатом реализации/ограничений/ошибок конкретного поставщика, но во многих случаях это не более чем мифы, созданные из-за непонимания внутреннего устройства баз данных.

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

1

Ключевое слово Exists оценивает значение true или false, но ключевое слово IN сравнивает все значения в соответствующем столбце подзапроса. Другой Select 1 можно использовать с командой Exists . Пример:

 SELECT * FROM Temp1, где существует (выберите 1 из Temp2, где условия...)
 

Но В менее эффективен, поэтому Существует быстрее.

Я думаю,

  • EXISTS – это когда вам нужно сопоставить результаты запроса с другим подзапросом. Результаты запроса № 1 должны быть получены там, где совпадают результаты подзапроса. Типа присоединение.. Например. выберите таблицу клиентов № 1, которые также разместили заказы на таблице № 2

  • IN – получить, если значение определенного столбца лежит IN список (1,2,3,4,5) Например. Выберите клиентов, которые находятся в следующих почтовых индексах, т. е. значения zip_code находятся в списке (….).

Когда использовать одно вместо другого… когда вы чувствуете, что оно читается правильно (лучше передает намерение).

Насколько мне известно, когда подзапрос возвращает значение NULL , весь оператор становится NULL . В этом случае мы используем ВЫХОД ключевое слово. Если мы хотим сравнить определенные значения в подзапросах, мы используем ключевое слово IN .

Какой из них быстрее, зависит от количества запросов, полученных внутренним запросом:

  • Когда ваш внутренний запрос извлекает тысячу строк, лучше выбрать EXIST
  • Когда ваш внутренний запрос извлекает несколько строк, IN будет быстрее

СУЩЕСТВУЕТ оценивает истинность или ложность, но IN сравнивает несколько значений. Если вы не знаете, существует запись или нет, вам следует выбрать EXIST 9.0003

Разница здесь:

 выберите *
из abcTable
где существует (выберите ноль)
 

Верхний запрос вернет все записи, а нижний вернет пустые.

 выбрать *
из abcTable
где abcTable_ID в (выберите ноль)
 

Попробуйте и посмотрите на результат.

1

Причина в том, что оператор EXISTS работает по принципу “как минимум найдено”. Он возвращает true и останавливает сканирование таблицы, как только будет найдена хотя бы одна совпадающая строка.

С другой стороны, когда оператор IN сочетается с подзапросом, MySQL должен сначала обработать подзапрос, а затем использовать результат подзапроса для обработки всего запроса.

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

Однако запрос, использующий оператор IN, будет выполняться быстрее, если набор результатов, возвращаемый из подзапроса, очень мал.

В некоторых случаях лучше использовать IN, чем EXISTS. В общем, если селективный предикат находится в подзапросе, используйте IN. Если селективный предикат находится в родительском запросе, используйте EXISTS.

https://docs.oracle.com/cd/B19306_01/server.102/b14211/sql_1016.htm#i28403

1

Насколько я понимаю, оба должны быть одинаковыми, если мы не имеем дело со значениями NULL.

Та же причина, по которой запрос не возвращает значение for = NULL vs is NULL. http://sqlinthewild.co.za/index.php/2010/02/18/not-exists-vs-not-in/

Что касается логического аргумента против компаратора, то для создания логического значения оба значения должны быть по сравнению, и именно так работает любое условие if. Поэтому я не понимаю, как IN и EXISTS ведут себя по-разному .

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

Вы можете использовать подзапрос, чтобы проверить, существует ли набор записей. Для этого вам нужно использовать предложение exists с подзапросом. Ключевое слово exists всегда возвращает истинное или ложное значение.

Думаю, здесь есть прямой ответ. Почему бы вам не проверить это у людей, которые разработали эту функцию в своих системах?

Если вы разработчик MS SQL, вот ответ непосредственно от Microsoft.

В :

Определяет, соответствует ли указанное значение какому-либо значению в подзапросе или списке.

СУЩЕСТВУЕТ :

Указывает подзапрос для проверки существования строк.

Я обнаружил, что использование ключевого слова EXISTS часто очень медленное (это очень верно в Microsoft Access). Вместо этого я использую оператор соединения следующим образом: должен-я-использую-ключевое-слово-существует-в-sql

Если вы можете использовать , где в вместо , где существует , затем , где , вероятно, быстрее.

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

Пример

Предположим, у нас есть 10 000 компаний, каждая из которых имеет 10 пользователей (таким образом, наша таблица пользователей содержит 100 000 записей). Теперь предположим, что вы хотите найти пользователя по его имени или названию его компании.

Следующий запрос с использованием существует , выполняется 141 мс:

 select * from `users`
где `first_name` = 'ворота'
или существует
(
  выберите * из `компаний`
  где `пользователи`.`company_id` = `компании`.`id`
  и `имя` = 'ворота'
)
 

Это происходит потому, что для каждого пользователя выполняется зависимый подзапрос:

Однако, если мы избежим существующего запроса и напишем его, используя:

 выберите * из `пользователей`
где `first_name` = 'ворота'
или users.company_id в
(
    выберите идентификатор из `компаний`
    где `имя` = 'ворота'
)
 

Тогда зависимые подзапросы будут исключены, и запрос будет выполняться через 0,012 мс. Первоначально я создал его с помощью INNER JOINS, но я хотел посмотреть, как он выглядит/работает с EXISTS. Я преобразовал его. Я включу обе версии здесь для сравнения.

 SELECT DISTINCT Категория, имя, описание
ИЗ [Наборы кодов]
ГДЕ Категория НЕ В (
    ВЫБЕРИТЕ определяемую категорию
      ОТ [Поля] f
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ [DataEntryFields] def ON f.DataEntryFieldId = def.Id
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Раздел s ON f.SectionId = s.Id
      Шаблон INNER JOIN t ON s.Template_Id = t.Id
    ГДЕ t.AgencyId = (ВЫБЕРИТЕ Id ИЗ АГЕНСТВ, ГДЕ Имя = 'Некоторое агентство')
        AND def.Category NOT IN ('OFFLIST', 'AGENCYLIST', 'RELTO_UNIT', 'БОЛЬНИЦЫ', 'EMS', 'TOWCOMPANY', 'UIC', 'RPTAGENCY', 'REP')
        И (t.Name как '% OH %')
        И (def.Category НЕ NULL AND def.Category <> '')
)
ЗАКАЗАТЬ ПО 1
 

Вот статистика:

Вот преобразованная версия:

 SELECT DISTINCT cs.Category, Name, Description
ИЗ [CodeSets] cs
ГДЕ НЕ СУЩЕСТВУЕТ(
    ВЫБЕРИТЕ * ИЗ [Полей] f
      ГДЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ИЗ [DataEntryFields] def
                       ГДЕ def.Id = f.DataEntryFieldId
                           AND def. Category NOT IN ('OFFLIST', 'AGENCYLIST', 'RELTO_UNIT', 'БОЛЬНИЦЫ', 'EMS', 'TOWCOMPANY', 'UIC', 'RPTAGENCY', 'REP')
                           И (def.Category НЕ NULL AND def.Category <> '')
                           И def.Category = cs.Category
                           И СУЩЕСТВУЕТ (SELECT * FROM Section s
                                          ГДЕ f.SectionId = s.Id
                                          И СУЩЕСТВУЕТ (SELECT * FROM Template t
                                                        ГДЕ s.Template_Id = t.Id
                                                           И СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ Агентств
                                                                          ГДЕ Name = «Некоторое агентство» и t.AgencyId = Id)
                                                                             И (t.Name как '% OH %')
                                                    )
                                        )
                    )
)
ЗАКАЗАТЬ ПО 1
 

Результаты, по крайней мере, меня не впечатлили.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *