SQL ən populyar kitabları tapır

Kitablar masam var

BookID BookName
 1       BookA
 2       BookB
 3       BookC

Üzv cədvəli

MemberID MemberName
 1          MemberA
 2          MemberB

Borc Cədvəli

MemberID BookID
 1         1
 1         2
 2         1
 2         2

Mən Memeber A-nın beş məşhur kitabını tapmaq istəyirəm

Aşağıdakı sorğuya cəhd etdim

SELECT        TOP (5) Book.BookTitle, COUNT(*) AS Count, Member_1.MemberName
FROM            Book INNER JOIN
                         Borrow ON Book.BookID = Borrow.BookID INNER JOIN
                         Member ON Borrow.MemberID = Member.MemberID INNER JOIN
                         Member AS Member_1 ON Borrow.MemberID = Member_1.MemberID
                         where Member.MemberName='A'
GROUP BY Book.BookTitle, Member_1.MemberName
ORDER BY Count DESC

Amma bu, mənə real nəticə vermir.

Hər hansı bir təklif yüksək qiymətləndiriləcəkdir.


person Owais Ahmed    schedule 19.09.2020    source mənbə
comment
Sualınızı MySQL-ə işarələdiniz, lakin kod MySQL-də işləməyəcək. Mən anlamadım.   -  person Gordon Linoff    schedule 19.09.2020
comment
Nəticə gözlədiyinizdən nə ilə fərqlənir? Və niyə iki dəfə borc alan üzvə qoşulursan? Bir üzvün məşhur kitabını nə adlandırırsınız? Demək istəyirsiniz ki, onlar eyni kitabı bir dəfədən çox götürürlər və siz kitabları üzvün onları nə qədər tez-tez götürdüyünə görə sıralaırsınız?   -  person Thorsten Kettner    schedule 19.09.2020


Cavablar (1)


Düşünürəm ki, sizdə çoxlu qoşulma var:

SELECT TOP (5) b.BookTitle, COUNT(*) AS Count, m.MemberName
FROM Book b INNER JOIN
     Borrow bo
     ON bo.BookID = b.BookID INNER JOIN
     Member m
     ON bo.MemberID = m.MemberID 
WHERE m.MemberName = 'A'
GROUP BY b.BookTitle, m.MemberName
ORDER BY Count DESC;

Qeyd: Bu sintaksis adətən SQL Server ilə əlaqələndirilir və MySQL-də işləmir. MySQL-də SELECT TOP (5) əvəzinə LIMIT 5 istifadə edərdiniz.

person Gordon Linoff    schedule 19.09.2020