Witam zmagam się z niewielką zagwozdką. Widok nie zawiera id, więc nie mogę mapować go w JPA, dlatego wpadłem na pomysł ażeby widok zawierał ID, jako
zwykły numer wiersza. Omijając ograniczenie na to ażeby widok nie zawierał zmiennych utworzyłem funkcję. W momencie uruchomienia poniższego zapytania:
SET @rowNumber = 0;
CREATE FUNCTION getIncrementedRowNumber(increaseValue INT(5)) RETURNS INT(5)
RETURN @rowNumber:= @rowNumber+increaseValue;
SELECT getIncrementedRowNumber(1) AS ID, t1.category, t1.total_sales
FROM (
SELECT c.name AS category
, SUM(p.amount) AS total_sales
FROM payment AS p
INNER JOIN rental AS r ON p.rental_id = r.rental_id
INNER JOIN inventory AS i ON r.inventory_id = i.inventory_id
INNER JOIN film AS f ON i.film_id = f.film_id
INNER JOIN film_category AS fc ON f.film_id = fc.film_id
INNER JOIN category AS c ON fc.category_id = c.category_id
GROUP BY c.name
ORDER BY total_sales DESC
) t1,
(SELECT getIncrementedRowNumber(0)) t2;
Otrzymuję przyzwoite wyniki takie jak oczekiwane
ID | category | total_sales |
---|---|---|
1 | Sports | 5314.21 |
2 | Sci-Fi | 4756.98 |
3 | Animation | 4656.30 |
4 | Drama | 4587.39 |
Ale dodanie CREATE VIEW sales_by_film_category AS
... powyższe zaptanie nuluje ID, w momencie gdy funkcja getIncrementedRowNumber
zwraca na sztywno jakaś wartość to w widoku wartość ta pojawia się poprawnie.
Jak sprawić by każdy wiersz poprawnie był zapisany tak jak w przykładowym wyciągu zawartym w tabeli ?