Запуск кода SQL COUNT - Отсутствие скобок - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь запустить эту команду 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;

Не могли бы вы подсказать мне, что не так?

enter image description here

имеют несколько таблиц Название книги, BookCopy,Авторство, Кредит, Автор, Издатель и Заемщик.Мне нужно найти наиболее заимствованную книгу и перечислить все названия и имена.

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*

Ответы [ 3 ]

1 голос
/ 05 января 2012

Попробуйте это:

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;

РЕДАКТИРОВАТЬ : Также все ваши таблицы неверны. Ваши JOIN ссылаются на таблицы, которых нет в вашем FROM утверждении

EDIT2 : Похоже, что ваши JOIN либо предназначены для простых объединений, либо не являются синтаксически более сложными объединениями. Пожалуйста, исследуйте здесь о JOIN типах. Для простого соединения используйте этот пример:

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 : проверьте здесь И здесь для получения информации о том, как правильно построить свои объединения

1 голос
/ 05 января 2012
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
0 голосов
/ 05 января 2012

Похоже, что проблема с AND в первой строке и с «Loan» в предложении WHERE ... Что именно вы пытаетесь сделать?

...