![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Mam strukture:
Cytat "SEDU_GUID" "GUID" "NAZWA" "ala" "jakisg1" "Kopia dla guid" "ola" "jakisg2" "sedu adminJST" "ala" "jakg3" "sedu2 adminJST" czyli mam rekordy, ktore na podstawie tej samej SEDU_GUID tworzą grupe rekordów. Tutaj będą to "ala" i "ola". Chcialbym teraz wyciągnąć po jednym rekordzie z kazdej grupy, czyli otrzymac np. tak: Cytat "SEDU_GUID" "GUID" "NAZWA" "ala" "jakisg1" "Kopia dla guid" "ola" "jakisg2" "sedu adminJST" NIe interesuje mnie, ktory rekord z grupy zostanie zwrocony. W mysql by to wyglądalo tak:
Ale oczywiscie w tym "genialnym" oraclu juz takie proste rzeczy nie dzialają, bo nie mozna grupowac po jednej kolumnie gdy w select mamy ich wiecej. Zeby dzialalo to musze do group by dowalic wszystkie kolumny co są w select, ale wowczas wywala mi wszystkie rekordy zamiast po jednym z grupy. Da sie to jakos prosto zalatwic? edit: wymyslilem podzapytanie:
Dzialac dziala, ale jak ktos znajdzie rozwiązanie jakies ladniejsze to chętnie poslucham (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) edit: i mam:
czyli te kolumny co chce sobie pobrac, to biore w max().... poronione, ale dziala (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) edit: Dobra, a inaczej: Chce pobrać rekord, który posiada wartość pola STATUS, będącą wartością najmniejszą w danej grupie (grupowanie po SEDU_GUID). Gdyby takich rekordów bylo kilka, chce pobrac tylko jeden. Ten jeden rekord ma byc tym, ktory byl najwczesniej dodany (pole: DATA_DODANIA). ps: rzuccie linkiem do jakiegos porządnego manuala/kursu dla oracle, bo juz nerwicy dostaję przy tej bazie. Jakim cudem jest ona uwazana za lepszą od mysql? (pytanie retorycznie - nie odpowiadac) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 26.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chce pobrać rekord, który posiada wartość pola STATUS, będącą wartością najmniejszą w danej grupie (grupowanie po SEDU_GUID). Gdyby takich rekordów bylo kilka, chce pobrac tylko jeden. Ten jeden rekord ma byc tym, ktory byl najwczesniej dodany (pole: DATA_DODANIA). Klasyka SQLa:
Siłą ORACLE'a jest PL/SQL a tam można zrobić dosłownie wszystko (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) Ten post edytował KILIUSZKIN 8.12.2006, 10:42:42 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
i tak, i nie. Ja prosilem o caly rekord (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Rekord posiada jeszcze inne kolumny, ktore chcialby pobrac. Jednak dodanie do selecta dodatwkoych kolumn oczywiscie generuje blad, bo przy grupowaniu nie moze byc kolumn w select, jesli nie bylo ich w group by. Jesli zas dolozyc je do group by, to wszystkie wyniki szlag trafia (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 26.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował KILIUSZKIN 8.12.2006, 12:28:19 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dzięki wielkie, działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
ps: musze sie przestawic z myslenia MySql na myslenie Oracle |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:19 |