Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

SQL - funkcja MAX i pobieranie "aktualnych danych"

janek1111 22 Cze 2014 11:30 1338 11
  • #1 22 Cze 2014 11:30
    janek1111
    Poziom 13  

    Witam. Mam problem z użyciem funkcji MAX w SQL na platformie VB NET. Przy pobieraniu danych z bazy typu mdb muszę spełnić warunek. A mianowicie mam kilka kolumn w tym jedną z datą a drugą z liczbą (nr ewid.). Nr ewid. w bazie się powtarzają oprócz daty (która świadczy o wersji danych w wierszu). Warunek polega na tym, żeby pobrać dane dla danego nr ewid. z całego wiersza, gdzie wspomniana data jest najświeższa. Korzystałem z poniższego kodu:

    Kod: sql
    Zaloguj się, aby zobaczyć kod


    Kod ten wiadomo pobiera datę i nr, ale nie resztę danych z wiersza. Nie mam pojęcia właśnie jak pobrać resztę przy jednym zapytaniu. Próbowałem coś z tzn. subselect'em, przejrzałem trochę for angielskich i nic pod vb net nie podchodzi...

    0 11
  • #2 22 Cze 2014 15:24
    cepelia
    Poziom 20  

    Ale to sobie trzeba napisać, jakie pola chcesz... bo masz tylko dwa w tej chwili.. tzn NrEwidKontrahenta i datę...

    0
  • #3 22 Cze 2014 15:38
    janek1111
    Poziom 13  

    Jak sobie dopiszę resztę pól do tego zapytania, to jest błąd...

    0
  • #4 22 Cze 2014 16:35
    mi14chal
    Poziom 28  

    To jak wygląda to zapytanie? I jaki jest błąd? Bo wróżki dzisiaj mają wolne...

    0
  • #5 22 Cze 2014 17:12
    janek1111
    Poziom 13  

    Zapytanie wygląda jw. tylko z dopisanymi za select'em dodatkowymi polami. VB jako takiego błędu nie "wypluwa". Potem następuje end sub.

    0
  • #6 22 Cze 2014 17:31
    mi14chal
    Poziom 28  

    To w końcu jest błąd czy nie?

    0
  • #7 22 Cze 2014 18:49
    cepelia
    Poziom 20  

    Proponuję stroić zapytania nie w visual studio tylko sql menagment studio...

    Poza tym tak na przyszłość, żeby otrzymać jak najszybciej poprawną odpowiedź należało by wysilić się i podać chociaż strukturę tabeli, przygotować skrypt generujący przykładowe dane i opisać o co chodzi...

    Prawdopodobnie chodzi ci o coś takiego...

    Kod: sql
    Zaloguj się, aby zobaczyć kod


    I tak jak mówię na przyszłość najlepiej dokładnie opisać problem i podać jak najwięcej danych.. bo tak prawdę mówiąc to nikomu się nie chcę uprawiać wróżbiarstwa...

    0
  • #8 29 Cze 2014 19:20
    janek1111
    Poziom 13  

    No niestety jestem amatorem w programowaniu i na bieżąco w temacie nie siedzę. Czasem korzystam z dobrodziejstw programowania i dzięki temu mogę optymalnie wykonać jakieś biurowe zadania. Właśnie dopiero teraz mam czas, aby powrócić do tematu. Twoje zapytanie oczywiście u mnie działa, tylko nie uwzględnia jednego warunku. A mianowicie, wyjściowo zapytanie powinno być odniesione nie tylko dla DataWstawienia, ale i dla NrEwidKontrahenta. Bo gdy daty przy rożnych NrEwidKontrahenta są takie same, to nieaktualne wiersze też są brane pod uwagę. Dla przykładu z tabeli:

    SQL - funkcja MAX i pobieranie "aktualnych danych"

    mają zostać pobrane dane dla pozycji 2 i 3, a nie 2,3 i 4. Oczywiście w bazie nie może zdarzyć się drugi wiersz o takim samym NrEwidKontrahenta i DataWstawienia.

    0
  • #9 29 Cze 2014 19:42
    cepelia
    Poziom 20  

    no tak ale grupuję wg nr kontrahenta... więc zasadniczo powinienem dostać po jednym rekordzie dla każdego kontrahenta...

    0
  • #10 29 Cze 2014 19:55
    janek1111
    Poziom 13  

    no tak, ale końcowym efektem są daty, które później odnosisz do DataWstawienia bez żadnego innego warunku. w przypadku powtarzania się dat w innych NrEwidKontrahenta występuje "błąd" - w moim przypadku...

    0
  • #11 29 Cze 2014 19:58
    cepelia
    Poziom 20  

    Rzucę na to okiem jutro w pracy...
    Prześlij jakiś przykładowy zestaw danych, bo wróżenie to nie jest moja mocna strona...

    0
  • #12 29 Cze 2014 21:07
    janek1111
    Poziom 13  

    Oczywiście problem rozwiązałem "półautomatycznie" przez kod w vb net:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Ale powyższe rozwiązanie mnie nie satysfakcjonuje, bo przy większej ilości danych robi się kłopotliwe. O jaki i w czym zestaw danych Ci chodzi?

    0