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

Нужна помощь с запросом к бд (mysql)

Mr MraMor Ученик (80), на голосовании 1 год назад
Добрый день. Есть такой код:
 CREATE TABLE BOOK( 
book_shifr INT PRIMARY KEY NOT NULL,
book_name CHAR(30),
author CHAR(60),
create_year CHAR(6)
)

CREATE TABLE ABONENT(
abonent_shifr INT PRIMARY KEY NOT NULL,
abonent_name CHAR(60),
address CHAR(150)
)

CREATE TABLE YCHET_KNIG(
number INT PRIMARY KEY NOT NULL,
book_shifr INT NOT NULL,
abonent_shifr INT NOT NULL,
CONSTRAINT YCHET_KING_BOOK FOREIGN KEY(book_shifr) REFERENCES BOOK(book_shifr) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT YCHET_KING_ABONENT FOREIGN KEY(abonent_shifr) REFERENCES ABONENT(abonent_shifr) ON DELETE CASCADE ON UPDATE CASCADE,
date_give DATE,
data_giveback DATE,
data_today DATE,
nalichie_vosvrata CHAR(4),
shtraf INT
)

INSERT INTO BOOK VALUES
(11, 'Мастер и Маргарита', 'Михаил Булгаков', '1929'),
(22, 'Собачье сердце', 'Михаил Булгаков', '1925'),
(33, 'Мёртвые души', 'Николай Гоголь', '1842'),
(44, 'Граф Монте-Кристо', 'Александр Дюма', '1844')

INSERT INTO ABONENT VALUES
(111, 'Волков', 'Россия, Москва, ул. Тургеневская, д. 1'),
(222, 'Устинов', 'Россия, Москва, ул. Брежская, д. 23'),
(333, 'Масленников', 'Россия, Москва, ул. Набережная, д. 11')

INSERT INTO YCHET_KNIG VALUES
(1, 11, 222, '2022-10-15', '2022-10-24', '2022-11-27', 'да', 0),
(2, 11, 333, '2022-11-15', '2022-11-20', '2022-11-27', 'нет', 0),
(3, 22, 333, '2022-11-15', '2022-11-25', '2022-11-27', 'нет', 0),
(4, 33, 111, '2022-11-06', '2022-11-13', '2022-11-27', 'нет', 0),
(5, 44, 222, '2022-10-20', '2022-10-30', '2022-11-27', 'да', 0),
(6, 44, 111, '2022-11-06', '2022-11-17', '2022-11-27', 'нет', 0)
Нужно сделать запрос - abonent_shifr, shtraf из таблицы ychet_knig, где nalichie_vosvrata = 'нет', при этом штраф должен расчитываться так - data_today - data_giveback, и потом каждый день "просрочки" должен умножаться на 0.5.
Первая часть есть:
SELECT abonent_shifr, shtraf FROM ychet_knig WHERE nalichie_vosvrata = 'нет'
А остальное как запихнуть в запрос не совсем понятно
Дополнен 1 год назад
решено
Голосование за лучший ответ
Άηϑρέΰ ҂ Искусственный Интеллект (179765) 1 год назад
тебе нужно не select а update использовать и уже в нем изменять поле shtraf
Mr MraMorУченик (80) 1 год назад
Мне нужен и SELECT и UPDATE, у меня на экран должно вывадиться шифр абонента и рядом его штраф. Проблема в том, как мне написать такое?
Άηϑρέΰ ҂ Искусственный Интеллект (179765) Mr MraMor, сначала update меняешь значения , а потом select вывод
Похожие вопросы