![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 14.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od kilku godzin głowię się nad problemem dotyczącym sformułowania zapytania do bazy mySQL, który zwróci najnowszą wersję dokumentu o określonym identyfikatorze. Baza wygląda mniej więcej tak: wersja_dokumentu [INT, PRIMARY, AUTOINC] | identyfikator_dokumentu [INT] | dane [TEXT] 0 | 0 | tresc 1 1 | 0 | tresc 2 2 | 0 | tresc 3 3 | 1 | tresc 4 4 | 1 | .............. 5 | 1 | | .......... 6 | 2 | ........ 7 | 2 | ......... 8 | 2 | ........ Chciałbym jednym zapytaniem sprawić, aby dostać coś takiego: wersja_dokumentu [INT, PRIMARY, AUTOINC] | identyfikator_dokumentu [INT] | dane [TEXT] 2 | 0 | tresc 3 5 | 1 | | .......... 8 | 2 | ........ Jak widać dla każdego identyfikatora dokumentu należy znaleźć maksymalną wartość wersji i zwrócić rekord. Jak to zrobić, za cholerę nie wiem i będę wdzięczny za wskazówki. Ten post edytował tjd84 14.09.2011, 14:18:46 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Odpowiednie sortowanie (ORDER BY) i grupowanie (GROUP BY) powinno załatwić sprawę. Jak będziesz miał dalsze pytania to pisz podając swoje dotychczasowe rozwiązanie.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 14.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Najpierw trzeba posortować, a później pogrupować:
Jednak wymaga to użycia podzapytania, co może nie być optymalnym rozwiązaniem przy dużej liczbie rekordów. Można również skorzystać z tego, że najnowsza wersja dokumentu jest jednocześnie największą liczbą (wersją) dla każdego dokumentu:
Co powinno działać szybciej. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 13:00 |