Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление данных из таблицы по условию 
:(
    Опции темы
SQL123
Дата 12.11.2022, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.10.2022

Репутация: нет
Всего: нет



Помогите, пожалуйста, решить задание. Уже всю голову сломал.

Задание
Из таблицы author удалить всех авторов, книги которых ни разу не заказывали.

Структура таблиц:
author (author_id, name_author);
genre (genre_id , name_genre);
book (book_id, title, author_id, genre_id, price, amount);
city (city_id, name_city, days_delivery);
client (client_id, name_client, city_id, email);
buy (buy_id, buy_description, client_id);
buy_book (buy_book_id, buy_id, book_id, amount);
step (step_id, name_step);
buy_step (buy_step_id, buy_id, step_id, date_step_beg, date_step_end);               

Результат (первые строки таблицы author):
+-----------+------------------+
| author_id | name_author      |
+-----------+------------------+
| 1         | Булгаков М.А.    |
           ...
+-----------+------------------+


Мое неправильное решение:

WITH authors_wo_sales AS 
(  
 SELECT author.author_id, COUNT(buy_book.book_id) as salescount  
 FROM author  
 LEFT JOIN book ON author.author_id = book.author_id  
 LEFT JOIN buy_book ON book.book_id = buy_book.book_id  
)  
DELETE author FROM author  
INNER JOIN authors_wo_sales ON authors_wo_sales.author_id = author.author_id  
WHERE authors_wo_sales.salescount = 0;


PM MAIL   Вверх
Akina
Дата 12.11.2022, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Схематично:
Код

DELETE автор
FROM авторы
WHERE NOT EXISTS (
    SELECT NULL
    FROM заказы
    WHERE заказы.книга = авторы.книга
    )

Возможно, в подзапросе будет участвовать более одной таблицы, типа:
Код

DELETE автор
FROM авторы
WHERE NOT EXISTS (
    SELECT NULL
    FROM заказы
    JOIN книги ON заказы.книга = книги.книга
    WHERE книги.автор = авторы.ID
    )



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1052 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.