sql - 创建两个表之间的除法操作困难
问题描述
CREATE TABLE BARROW
(
ID INT PRIMARY KEY,
STUDENT_ID INT ,
BOOK_ID INT,
)
INSERT INTO BARROW (ID,STUDENT_ID,BOOK_ID)VALUES (1,10010,00025)
INSERT INTO BARROW (ID,STUDENT_ID,BOOK_ID)VALUES (2,11094,00107)
INSERT INTO BARROW (ID,STUDENT_ID,BOOK_ID)VALUES (3,11094,00005)
INSERT INTO BARROW (ID,STUDENT_ID,BOOK_ID)VALUES (4,10121,00107)
INSERT INTO BARROW (ID,STUDENT_ID,BOOK_ID)VALUES (5,10020,00001)
INSERT INTO BARROW (ID,STUDENT_ID,BOOK_ID)VALUES (6,10020,00005)
CREATE TABLE BOOK
(
ID INT PRIMARY KEY ,
TITLE VARCHAR(100),
AUTHOR VARCHAR(100),
PUBLISHER VARCHAR(100),
PUB_YEAR INT,
ISBN_NO BIGINT,
)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (00001,'An Intoduction to Database Systems','A.k.Alien','McGrawHill',2001,74895841)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (00005,'An Intoduction to Relational Database','R.Torlone','Addison Wesley',2003,58663571)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (00025,'Prgramming with visual basic','N.B.Grag','Prentice Hall',1999,851447356)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (00107,'Mathematics For Engeenering','T.Date','Addison Wesley',2000,956482550)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (03567,'Fundamentals of Programming','W.L.Loure','Prentice Hall',2004,1551648)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (00267,'Engeenering Mathematics','W.C.Evans','Oxford',2005,4478568)
INSERT INTO BOOK (ID,TITLE,AUTHOR,PUBLISHER,PUB_YEAR,ISBN_NO)VALUES (00251,'Engeenering Mathematics','D.Woods','Prentice Hall',2003,79212655)
这些是我的表和值,我想获取所有已发行书籍的学生 ID 的记录,出版商名称为“Addison Wesley”
我要获取的结果:
( studentID,bookID(Borrow)) ÷ ( (bookID)( id ( publisher = Addison Wesley (Book))))
我想在两个表之间执行除法运算,并希望从中获取学生 ID:
SELECT STUDENT_ID, BOOK_ID
FROM BARROW
DIV
SELECT ID AS B
FROM BOOK
WHERE PUBLISHER = 'Addison Wesley'
从这个图像结果中,我想通过执行除法运算来获取所有学生的 ID...
解决方案
您想要的是 a JOIN
,我们将每个学生连接到他们已发行的书籍,然后根据该PUBLISHER
字段对其进行过滤:
SELECT DISTINCT STUDENT_ID
FROM BARROW BA
JOIN BOOK BK ON BK.ID = BA.BOOK_ID
WHERE BK.PUBLISHER = 'Addison Wesley'
输出:
STUDENT_ID
11094
10121
10020
我们DISTINCT
用来避免重复行,其中一名学生发行了不止一本由Addison Wesley
推荐阅读
- java - 为什么可以从类实例调用静态方法
- r - 在 R 中,读取数千个文件并将其组合成数据帧的最快方法是什么?
- reporting-services - 将 PDF 文件转换为 RDL 格式 - SSRS
- c# - Enum.ToString() 返回默认值而不是指定值
- jquery - How to select elements those have certain two ancestors?
- c++ - 在回调(CPXcutcallbackadd)中添加用户剪切后如何编写问题公式(CPXwriteprob)?
- vb.net - How to implement IXmlSerializable.ReadXml in case of using AbstractFactory-Pattern and Polymorphism
- r - How to set an x,y plot in R with type data before/after where each point also shows the standard deviations?
- reactjs - SweetAlert : 需要增加文本区域的大小
- ssl - “找不到合适的客户端证书 - 在没有客户端身份验证的情况下继续”