Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Запрос по sql

Александр Никонов Знаток (275), на голосовании 11 месяцев назад
на почту приходит отчет если в одной из баз отсутствует sku.
Два варианта результата:
  1. отчет содержит отсутствующие sku. Информация полезна. Пользователь далее ее обработает.
  2. отчет содержит только шапку таблицы, потому что нет отсутствующих sku. Для пользователя получения данного письма будет избыточным, т.к. не будет требовать никаких действий с его стороны.
Вопрос: как настроить отчет отправки, что результат 2 не приходил на почту?
Спасибо ☺️
Голосование за лучший ответ
Бинарный Балагур Гений (84506) 12 месяцев назад
Для того чтобы настроить отчет отправки, чтобы результат 2 не приходил на почту, необходимо изменить SQL-запрос. Для этого можно использовать следующий подход:

1. Добавить условие в SQL-запрос, которое будет проверять, есть ли в результате запроса хотя бы одна строка. Если строк нет, то отчет не отправляется.

Например, если SQL-запрос для получения отчета выглядит следующим образом:

```sql
SELECT sku
FROM products
WHERE sku NOT IN (
SELECT sku
FROM another_table
);
```

То его можно изменить следующим образом:

```sql
SELECT sku
FROM products
WHERE sku NOT IN (
SELECT sku
FROM another_table
)
AND COUNT(*) > 0;
```

Этот запрос будет возвращать только строки, если в таблице `products` есть хотя бы один товар, для которого нет соответствующего товара в таблице `another_table`.

2. Добавить проверку в коде, который отправляет отчет.

Например, если код для отправки отчета выглядит следующим образом:

```php
$result = get_report();

if ($result->num_rows > 0) {
send_report($result);
}
```

То его можно изменить следующим образом:

```php
$result = get_report();

if ($result->num_rows > 0) {
send_report($result);
} else {
// Не отправляем отчет, т.к. в результате нет строк
}
```

Этот код будет проверять, есть ли в результате запроса хотя бы одна строка. Если строк нет, то отчет не отправляется.

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