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 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%)
|
To zapytanie zwróci informacje o trzech wierszach największym id. Wcale nie muszą to być trzy ostatnie zakupy. Dzięki za podpowiedź ale dalej nie wiem jak skonstruować warunki do tego, żeby było poprawnie. Same zapytanie jest niepoprawne więc warunki w nim nic nie pomogą.Swoją drogą to tabela też nie jest poprawna - np. możesz dopisać towar raz w litrach, a przy kolejnym zakupie w kg. Chyba, że jest to celowe. Jeśli nie to poczytaj o postaciach normalnych. Jeśli zależy ci na wydajności to trzy ostatnie ceny możesz przechowywać w osobnej tabeli. Ich aktualizacje najwygodniej obsłużyć bezpośrednio w bazie danych, za pomocą wyzwalaczy. Trzeba wziąć pod uwagę, że dane w tabeli mogą być zaktualizowane lub usunięte więc i dla tych zdarzeń trzeba napisać wyzwalacze. Jeśli masz pewnośc, że nie będzie żadnych aktualizacji lub kasowania wtedy to co jest wystarczy. |
|
|
|
diodadioda Grupowanie, sortowanie, ostatnie 3 wyniki MySQL 16.06.2014, 09:40:14
MatKus Jedyne rozwiązanie, jakie mi przychodzi do głowy, ... 16.06.2014, 13:12:46
diodadioda Dzięki za podpowiedź ale dalej nie wiem jak skonst... 16.06.2014, 22:14:51
MatKus No, te 2 zapytania to najprościej, jak się da.
Two... 17.06.2014, 07:47:22
diodadioda Dzięki bo już zastanawiałem sie nad pivot table że... 17.06.2014, 16:49:29
kartin Kolumna indeks musi być w obu tabelach tego samego... 17.06.2014, 17:05:00
diodadioda No tak myslalem, wiec ten wariant tez sprawdzilem ... 17.06.2014, 17:24:14
kartin Kod błędu ewidentnie mówi, że jest problem z klucz... 17.06.2014, 17:28:36
diodadioda Takie cuś
Table
Create Table
zakupy2014
CREATE TAB... 17.06.2014, 17:37:32
kartin Więc jednak kolumny indeks w obu tabelach nie są t... 17.06.2014, 17:44:48
diodadioda [quote name='diodadioda' date='17.06.2... 17.06.2014, 18:01:50
kartin Zadanie dla spostrzegawczych. Znajdź różnice pomię... 17.06.2014, 18:15:30
diodadioda Przepraszam ...
Teraz powstaly indeksy, wyzwalacze... 17.06.2014, 18:20:08
kartin Teraz dodaj sobie coś do tabeli zakupy2014. 17.06.2014, 18:25:48
diodadioda No super Teraz już wiem dlaczego nie mogę usuwać ... 17.06.2014, 18:52:23 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 07:57 |