SQL duke gjetur librat më të njohur

Unë kam tryezën e librave

BookID BookName
 1       BookA
 2       BookB
 3       BookC

Tabela e anëtarëve

MemberID MemberName
 1          MemberA
 2          MemberB

Tabela e Huazimit

MemberID BookID
 1         1
 1         2
 2         1
 2         2

Unë dua të zbuloj pesë libra të njohur nga Memeber A

Provova pyetjen e mëposhtme

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

Por kjo nuk po më jep rezultatin aktual.

Çdo sugjerim do të vlerësohej.


person Owais Ahmed    schedule 19.09.2020    source burimi
comment
Ju etiketuat pyetjen tuaj MySQL, por kodi nuk do të ekzekutohet në MySQL. Jam konfuz.   -  person Gordon Linoff    schedule 19.09.2020
comment
Si është rezultati i ndryshëm nga ai që prisni? Dhe pse i bashkoheni anëtarit huamarrës dy herë? Dhe si e quani librin popullor nga një anëtar? Do të thotë që ata huazojnë të njëjtin libër më shumë se një herë dhe ju i renditni librat sipas asaj se sa shpesh anëtari i huazoi?   -  person Thorsten Kettner    schedule 19.09.2020


Përgjigjet (1)


Unë mendoj se keni shumë bashkime:

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;

Shënim: Kjo sintaksë zakonisht lidhet me SQL Server dhe nuk funksionon në MySQL. Në MySQL, ju do të përdorni LIMIT 5 në vend të SELECT TOP (5).

person Gordon Linoff    schedule 19.09.2020