Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Grupowanie, sortowanie, ostatnie 3 wyniki MySQL
diodadioda
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.06.2014

Ostrzeżenie: (0%)
-----


Witam po raz pierwszy
Niestety poległem w prostej sprawie, jak mi się przynajmniej wydawało..:
Mam następującą tabelę zakupu2014:


|id |indeks |nazwa_towaru |jm |il0osc |cena_zakupu |nazwa_kontrahenta |data_realizacji|
|0 |121 |aaa |kg |12 |12.1 |hh |2014-01-24|
|1 |121 |aaa |kg |12 |13.1 |hh |2014-01-23|
|2 |122 |bbb |szt |12 |14.1 |hh |2014-01-24|
|3 |121 |aaa |kg |12 |10.1 |hh |2014-01-01|
|4 |122 |bbb |szt|12 |9.1 |hh |2014-01-10|
|5 |122 |bbb |szt|12 |1.1 |hh |2014-01-12|

potrzebuje osiągnąc taki wynik jak daje:
Select indeks,cena_zakupu,avg(cena_zakupu),min(cena_zakupu)
from zakupy2014
group by indeks

ale zamiast np avg ostatnią cenę zakupu, przedostatnia cenę zakupu i przedprzedostatnia cenę zakupu -w jednym rekordzie jak to jest właśnie w tym zapytaniu
Oczywiście biorę po uwagę wariant ze zbudowaniem osobnej tabeli z takimi wynikami.
Podkreślam, że dla niektórych indeksów może być tylko ostatnia cena_zakupu.
Ma ktoś pomysł jak to rozwiązać?
Pozdrawiam

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
diodadioda
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.06.2014

Ostrzeżenie: (0%)
-----


[quote name='diodadioda' date='17.06.2014, 18:24:14 ' post='1111477']
CREATE TABLE `ostatnie_ceny` (
`indeks` varchar(15) NOT NULL,

no w kodzie co uruchamiam jest varchar(15)

CREATE TABLE `ostatnie_ceny` (
`indeks` varchar(15) NOT NULL,
`cena_ost` decimal(8,2) NOT NULL,
`cena_przedost` decimal(8,2) DEFAULT NULL,
`cena_przedprzedost` decimal(8,2) DEFAULT NULL,
PRIMARY KEY (`indeks`),
FOREIGN KEY (`indeks`) REFERENCES `zakupy2014` (`indeks`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;

DROP TRIGGER IF EXISTS ostatnie_ceny;
DELIMITER //

CREATE TRIGGER ostatnie_ceny AFTER INSERT ON zakupy2014 FOR EACH ROW
BEGIN
DECLARE v_cena_przedost, v_cena_przedprzedost DECIMAL(8,2) DEFAULT NULL;

SELECT cena_ost, cena_przedost INTO v_cena_przedost, v_cena_przedprzedost
FROM ostatnie_ceny
WHERE indeks = NEW.indeks;

REPLACE ostatnie_ceny (indeks, cena_ost, cena_przedost, cena_przedprzedost)
VALUE (NEW.indeks, NEW.cena_zakupu, v_cena_przedost, v_cena_przedprzedost);
END//
DELIMITER ;

Chyba ze coś przeoczylem..moze musi byc inny typ zmiennej, ale jaki co by też znaki obsłużył?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 18:16