To mój pierwszy post więc proszę o wyrozumiałość.
Próbuje pobrać dane z kilku tabel ale natrafiłem na problem z którym nie mogę sobie poradzić. Na początku może przedstawię sktrukturę tabel. Podaje tylko nazwy pól, które wykorzytuje w zapytaniu.
Tabela: ShipmentsBooks
Pola: Id, ShipmentId, BookId, PurchasePrice, Quantity
Tabela: Books
Pola: Id, ISBN, Title
Tabela: AuthorsBooks
Pola: Id, AuthorId, BookId
Tabela: Authors
Pola: Id, FirstName, LastName
Próbuje utworzyć tabelę, która będzie zawierała następujące dane pogrupowane wg Id książki:
BookId , ISBN, Title, Authors, średnia z PurchasePrice i suma z Quantity
W momencie gdy zastosuje zapytanie:
SELECT Books.Id AS BookId, ISBN, Title, GROUP_CONCAT(DISTINCT FirstName, ' ', LastName ORDER BY LastName SEPARATOR ', ') AS Author, ROUND(AVG(PurchasePrice),2) AS PurchasePrice, SUM(Quantity) AS SummaryQuantity FROM ShipmentsBooks LEFT JOIN Books ON ShipmentsBooks.BookId = Books.Id LEFT JOIN AuthorsBooks ON AuthorsBooks.BookId = Books.Id LEFT JOIN Authors ON AuthorsBooks.AuthorId = Authors.Id GROUP BY Books.Id"
wszystkie dane pobiera dobrze poza ostatnią częścią "SUM(Quantity) AS SummaryQuantity". W momencie gdy dana książka ma dwóch autorów - mnoży wynik razy 2, gdy 3 - mnoży razy 3 itd.
Narazie jedynym rozwiązaniem, które sprawiło że problem ustąpił było usunięciem kolumny odpowiedzialnej za autorów... Ale przecież nie oto chodzi.
Proszę o pomoc.