无法发出有效的SQL请求。的MySQL

塞格·沙波瓦尔

我需要提出一个要求,要求所有本月借书证到期且尚未将书退还给图书馆的人参加。我已请求找到其借书证在本月结束的人:

select reader.nameReader from reader where year(reader.validityOfTicket)=year(current_date()) and month(reader.validityOfTicket)=month(current_date())
and day(reader.validityOfTicket)>day(current_date())

但不是我不能让所有还没有把书还给图书馆的人。如果有人拿了一本书,它就会history.actionHistory像“给”一样显示如果有人带回一本书,则显示为history.actionHistory“ Take”。这是我的桌子。请帮助!

        create table author(
idAuthor int auto_increment NOT NULL,
nameAuthor VARCHAR(30) NOT NULL,
surnameAuthor VARCHAR(40),
PRIMARY KEY(idAuthor)
);

create table book(
idBook int NOT NULL,
title varchar(20) NOT NULL,
publishingHouse varchar(60) NOT NULL,
publishingDate DATE NOT NULL,
location VARCHAR(30) NOT NULL,
accessType enum('Full','Restricted') NOT NULL,
currentState enum('Store','Reader'),
idAuthor int NOT NULL ,
PRIMARY KEY(idBook),
foreign Key (`idAuthor`) references `author`(`idAuthor`)
 ON DELETE CASCADE ON UPDATE CASCADE

);
create table reader(
idReader int auto_increment NOT NULL,
surnameReader varchar(30) NOT NULL,
nameReader varchar(30) NOT NULL,
patronymicReader varchar(30) NOT NULL,
validityOfTicket DATE NOT NULL,
category enum('Full', 'Restricted') NOT NULL,
PRIMARY KEY(idReader)
);

create table history(
idHistory int auto_increment NOT NULL,
dateHistory DATE NOT NULL,
actionHistory enum('Give','Take'),
idReader int NOT NULL,
idBook int NOT NULL,
PRIMARY KEY(idHistory),
foreign key (`idReader`) REFERENCES `reader`(`idReader`)
ON DELETE CASCADE ON UPDATE CASCADE
);
琼斯

对于初学者,您可以使用MySQL的LAST_DAY()功能,如下所示:

     reader.validityOfTicket >= LAST_DAY(CURRENT_DATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
 AND reader.validityOfTicket <  LAST_DAY(CURRENT_DATE()) + INTERVAL 1 DAY

查找本月到期的票。如果这样做,您将可以在validityOfTicket上使用索引来加快查询速度。

然后,对于每位图书馆主顾,您都必须数出“已赠送”而非“已接受”的书籍。这样的事情可能会起作用。

         SELECT idReader,
                SUM( CASE WHEN actionHistory = 'Give' THEN 1
                          WHEN actionHistory = 'Take' THEN -1
                          ELSE 0 END ) booksGiven
           FROM history
          GROUP BY idReader

然后,您可以将该摘要查询视为子查询,并将其与另一个查询连接。

select reader.nameReader
  from reader
  join (
       SELECT idReader,
              SUM( CASE WHEN actionHistory = 'Give' THEN 1
                        WHEN actionHistory = 'Take' THEN -1
                        ELSE 0 END ) booksGiven
         FROM history
        GROUP BY idReader
       ) books on reader.readerId = books.readerId
 where reader.validityOfTicket >= LAST_DAY(CURRENT_DATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
   and reader.validityOfTicket < LAST_DAY(CURRENT_DATE()) + INTERVAL 1 DAY
   and books.booksGiven > 0

您对读者有一个判断标准:本月票证到期。您在书籍上还有另一个标准:不止一个已签出。诀窍是让每个查询分开工作,然后加入它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法发出有效的SQL请求。的MySQL

来自分类Dev

如何使用表数组向mysql发出有效请求?

来自分类Dev

如何通过此GUI发出有效的SQL命令?

来自分类Dev

是否可以使用Ruby或Python禁用锚/引用来发出有效的YAML?

来自分类Dev

MySQL的JSON输出有效,但是出现白屏了吗?

来自分类Dev

php -l:禁止输出有效文件

来自分类Dev

找出有效落在边界框下方的图块

来自分类Dev

Imgur API未给出有效响应

来自分类Dev

如何尽快有效地发出数千个Web请求

来自分类Dev

通过ajax不断向db发出请求的有效方法是什么?

来自分类Dev

查询数据库和发出API请求的有效方法

来自分类Dev

LINQ实体无法生成有效的MySQL

来自分类Dev

SQL游标有效,但db无法保存更改

来自分类Dev

PHP中的MYSQL语法错误,但SQL有效

来自分类Dev

iptables-“错误:没有给出有效的子命令”的含义?

来自分类Dev

梅森:请求有效负载

来自分类Dev

卷曲有效,但Python请求无效

来自分类Dev

有效的api请求返回null

来自分类Dev

其余API请求有效负载

来自分类Dev

有效的请求签名生成

来自分类Dev

哪些2to3修复程序输出有效的Python 2代码?

来自分类Dev

指针算术超出有效内存范围会产生什么危害?

来自分类Dev

Nuget错误:指定的参数超出有效值范围。参数名称:supportedFrameworks

来自分类Dev

淡入淡出有效使用css悬停吗?

来自分类Dev

System.Argument异常:指定的参数超出有效值范围

来自分类Dev

PHP密码保护的表单帮助。1个输出有效,倍数不

来自分类Dev

如何在一个列表中得出有效的方法

来自分类Dev

计算MACD和错误处理时,数字超出有效范围

来自分类Dev

指定的参数超出有效值范围。参数名称:值

Related 相关文章

热门标签

归档