在oracle中检索数据

时间:2017-03-30 16:18:38

标签: oracle

表格描述:

BRANCH(Branchid,分支名称,HOD) 学生(USN,姓名,地址,Branchid,SEM) BOOK(BOOKID,BOOKNAME,AUTHORID,出版社,Branchid) 作者(的AuthorID,AUTHORNAME,国籍,年龄) BORROW(USN,BOOKID,Borrowed_Date)

Q1)显示借用多个作者书籍的学生详细信息。 Q2)列出借用书籍的学生的详细信息 出版商。

1 个答案:

答案 0 :(得分:0)

尝试这个:

SELECT  
 S.NAME             AS "STUDENT NAME"
,S.ADDRESS          AS "STUDENT ADDRESS"
,BW.BORROWED_DATE   AS "DATE BORROWED"
,BR.BRANCHNAME      AS "BRANCE NAME"
,BK.BOOKNAME        AS "NAME OF BOOK"
,BK.PUBLISHER       AS "BOOK PUBLISHER"
,A.AUTHORNAME       AS "NAME OF AUTHOR"
,A.COUNTRY          AS "COUNTRY OF AUTHOR"
,A.AGE              AS "AGE OF AUTHOR"
---
FROM 
STUDENT S
---
JOIN BORROW BW
    ON S.USN = BW.USN
--- 
JOIN BOOK BK
    ON BW.BOOKID = BK.BOOKID
--    
JOIN BRANCH BR
    ON BR.BRANCHID = BK.BRANCHID
---
JOIN AUTHOR A
    ON BK.AUTHORID = A.AUTHORID
--
--
JOIN (SELECT P1
        FROM (
            SELECT 
             SS_S.USN       "P1"
            ,SS_A.Authorid  "P2"
            FROM 
            STUDENT SS_S
            JOIN BORROW SS_BW
                ON SS_S.USN = SS_BW.USN
            JOIN BOOK SS_BK
                ON SS_BW.BOOKID = SS_BK.BOOKID
            JOIN AUTHOR SS_A
                ON SS_BK.AUTHORID = SS_A.AUTHORID
            GROUP BY 
             SS_S.USN
            ,SS_A.Authorid
            HAVING COUNT(SS_A.Authorid) > 1
        )
    ) SUB_Q
ON S.USN = SUB_Q.P1
ORDER BY 1, 3

问题编号2很简单

SELECT  
 S.NAME             AS "STUDENT NAME"
,S.ADDRESS          AS "STUDENT ADDRESS"
,BW.BORROWED_DATE   AS "DATE BORROWED"
,BR.BRANCHNAME      AS "BRANCE NAME"
,BK.BOOKNAME        AS "NAME OF BOOK"
,BK.PUBLISHER       AS "BOOK PUBLISHER"
,A.AUTHORNAME       AS "NAME OF AUTHOR"
,A.COUNTRY          AS "COUNTRY OF AUTHOR"
,A.AGE              AS "AGE OF AUTHOR"
---
FROM 
STUDENT S
---
JOIN BORROW BW
    ON S.USN = BW.USN
--- 
JOIN BOOK BK
    ON BW.BOOKID = BK.BOOKID
--    
JOIN BRANCH BR
    ON BR.BRANCHID = BK.BRANCHID
---
JOIN AUTHOR A
    ON BK.AUTHORID = A.AUTHORID
--
WHERE 
BK.PUBLISHER = ''