正在运行SQL计数代码-缺少括号

正在运行SQL计数代码-缺少括号,sql,oracle,select,count,sqlplus,Sql,Oracle,Select,Count,Sqlplus,我正在尝试运行此SQL命令,但它给我一个错误,SQL命令没有正确结束。注意,我使用的是Oracle的11g SELECT BookTitle.btName, BookTitle.Isbn FROM BookTitle AND SELECT COUNT(Isbn) FROM BookTitle JOIN Loan ON (Borrower.borId = Loan.borId) JOIN BookCopy ON (Loan.bcId = BookCopy.bcId) JOIN Authorship

我正在尝试运行此SQL命令,但它给我一个错误,SQL命令没有正确结束。注意,我使用的是Oracle的11g

SELECT BookTitle.btName, BookTitle.Isbn FROM BookTitle AND SELECT COUNT(Isbn)
FROM BookTitle
JOIN Loan ON (Borrower.borId = Loan.borId)
JOIN BookCopy ON (Loan.bcId = BookCopy.bcId)
JOIN Authorship ON (BookCopy.isbn = Authorship.isbn)
JOIN Author ON (Author.authorID = Authorship.authorID)
WHERE Loan
ORDER BY Loan.dateOut DESC;
你能告诉我怎么了吗

有多个表格,包括书名、书刊、作者、借阅人、作者、出版商和借阅人。我需要找到借阅最多的书,列出所有的书名和isbn

BookTitle contains ISBN(PK), btName, datePublished, pubId*, ageLower, ageUpper, value.
Borrower contains borID(PK), borName, borAddress and borMaxbook
BOokCopy cvontains bcID(PK), ISBN*, dateAcquired, dateDestroyed
oan contains borID(PH)*, bcID(OK)*, dateOut(FK), dateDue and dateBack
Publisher contains PubId(PK), pubName and pubAddress
Publisher cotains PubID(8), pubName, pubAddress
Authoer contains authorID(PK) and authorName
Authorship contains authorId*, and ISBN*

问题似乎在于第一行中的和以及WHERE条款中的贷款。。。你到底想做什么?

试试这个:

SELECT BookTitle.btName, BookTitle.Isbn, COUNT(Isbn) FROM BookTitle
JOIN Loan ON (Borrower.borId = Loan.borId)
JOIN BookCopy ON (Loan.bcId = BookCopy.bcId)
JOIN Authorship ON (BookCopy.isbn = Authorship.isbn)
JOIN Author ON (Author.authorID = Authorship.authorID)
-- WHERE Loan (Commented out because its not ended properly)
ORDER BY Loan.dateOut DESC;
编辑:您的所有表格似乎都是错误的。您的联接引用了FROM语句中不存在的表

EDIT2:看来您的联接不是打算用作简单联接,就是语法不正确的更复杂联接。请研究加入类型。对于简单连接,请使用以下示例:

SELECT BookTitle.btName, BookTitle.Isbn, SELECT COUNT(Isbn) FROM BookTitle, Borrower, Loan, BookCopy, Authorship, Author
WHERE (Borrower.borId = Loan.borId)
AND (Loan.bcId = BookCopy.bcId)
AND (BookCopy.isbn = Authorship.isbn)
AND (Author.authorID = Authorship.authorID)
ORDER BY Loan.dateOut DESC;

编辑3:检查并获取有关如何正确构建联接的信息

您似乎将一个查询卡在了另一个查询中。然后选择计数。。。在标准SQLServer中当然不允许。请不要从控制台发布屏幕截图。而是复制并粘贴ouptut,并使用标记对其进行格式化。我想这是可行的,但我得到了一个新的错误ORA-00920:无效关系operator@Brian这是因为你的WHERE语句没有正确结束。尝试以下操作:选择BookTitle.btName,BookTitle.Isbn,COUNTIsbn FROM BookTitle JOIN Loan ON Borror.borId JOIN BookCopy ON Loan.bcId=BookCopy.bcId JOIN Authoriship ON BookCopy.Isbn=Authoriship.Isbn JOIN Author ON Authority.Authority=Authority.authorID ORDER BY Loan.dateOut DESC;第2行错误:ORA-00904:借款人。BORD:无效identifier@Brian-您的表似乎也错了,因为您的联接没有引用FROM语句中的表。我不明白您在说什么。基本上,为了“获取”其他表,我必须连接多个表。我正在尝试从BookTitle表中获取每本书的ISBN和标题,并计算图书的数量,然后从Loan表中获取“最受欢迎”的图书。您可以编辑您的原始问题,从每个表中添加几行示例数据,以及您想要的数据吗要输出?这些表如何链接到表BookTitle?再说一次,你希望你的最终输出看起来不是一个描述,而是实际显示一些你想要结束的行吗?谢谢,这是可行的,但是这些值不是按流行程度排序的。按数字排序贷款DESC@ypercube-这是否需要作者和作者表?布莱恩-这是一个家庭作业问题吗?@professional业余爱好者:似乎这两个表中不需要任何列。如果是,我们就有问题了,我们不能使用JOIN Authorship,因为它可能与书名有一对多的关系,并且计数会显示错误的结果。
SELECT 
      BookTitle.btName  AS bookName
    , BookTitle.isbn    AS ISBN
    , COUNT(*)          AS numberOfLoans 
FROM 
        BookTitle  
    JOIN 
        BookCopy   ON BookCopy.isbn = BookTitle.isbn
    JOIN 
        Loan       ON Loan.bcId = BookCopy.bcId
    JOIN 
        Borrower   ON Borrower.borId = Loan.borId
GROUP BY 
      BookTitle.btName
    , BookTitle.isbn
ORDER BY 
      MAX(Loan.dateOut) DESC         --- order by latest loan