SQL populārāko grāmatu atrašana

Man ir grāmatu galds

BookID BookName
 1       BookA
 2       BookB
 3       BookC

Biedru tabula

MemberID MemberName
 1          MemberA
 2          MemberB

Aizņemties tabulu

MemberID BookID
 1         1
 1         2
 2         1
 2         2

Es vēlos uzzināt piecas populāras Memeber A grāmatas

Es izmēģināju šādu vaicājumu

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

Bet tas man nesniedz patieso rezultātu.

Jebkurš ieteikums būtu pateicīgs.


person Owais Ahmed    schedule 19.09.2020    source avots
comment
Jūs atzīmējāt savu jautājumu ar MySQL, taču kods nedarbosies MySQL. Esmu apjucis.   -  person Gordon Linoff    schedule 19.09.2020
comment
Kā rezultāts atšķiras no gaidītā? Un kāpēc jūs divreiz pievienojaties aizņēmējam? Un ko jūs saucat par populāru biedra grāmatu? Jūs domājat, ka viņi aizņemas vienu un to pašu grāmatu vairāk nekā vienu reizi, un jūs vērtējat grāmatas pēc tā, cik bieži dalībnieks tās aizņēmās?   -  person Thorsten Kettner    schedule 19.09.2020


Atbildes (1)


Man šķiet, ka jums ir pārāk daudz pievienojumu:

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;

Piezīme. Šī sintakse parasti ir saistīta ar SQL Server un nedarbojas MySQL. Programmā MySQL jūs izmantotu LIMIT 5, nevis SELECT TOP (5).

person Gordon Linoff    schedule 19.09.2020