![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 14.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przykładowo w jednej z kolumn mam wartości poukładane w taki sposób, że dane w tej kolumnie wyglądają w następujący sposób
1,1,1,1,2,2,2,3,4,4,4,4,4,4,4,5,5,6,6,6,7,7,7,8,9,10,10 chciałbym w zbiorze wynikowym mieć pierwszą i (jeśli jest) ostatnią, wartość z danego podzbioru (jedynek, dwójek, trójek itd) czyli 1,1,1,1,2,2,2,3,4,4,4,4,4,4,4,5,5,6,6,6,7,7,7,8,9,10,10,10 zbiór wynikowy składałby się z pogrubionych i powiększonych wartości (jak widac powyżej) tylko, że nie mam pomysłu jak to zrobić, trzeba by znać wartość następnego wiersza i nie wiem jak to zrobić może ktoś będzie miał pomysł, będę wdzięczny |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W mysql tego nei zrobisz.
W php zrob sobie explode po ',' i w pętli przeleć sprawdzająć poprzednia wartosc z obecna i na tej podstawie pogrubiać. -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 14.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
W mysql tego nei zrobisz. W php zrob sobie explode po ',' i w pętli przeleć sprawdzająć poprzednia wartosc z obecna i na tej podstawie pogrubiać. coś tak czułem, że tak będzie ![]() to jest kolumna - zapisałem w poziomie, żeby mniej miejsca zajęło i napisałem, że to kolumna, czyli powinno to być odebrano jako: 1 1 1 1 2 2 2 3 4 4 4 itd... reszta zostaje po staremu Ten post edytował fragles 14.07.2009, 11:21:12 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
a W mySqlu przez procedure? raczej powinno sie dac
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
A według czego są sortowane te wartości? Być może uda się to zrobić za pomocą dodatkowych warunków, o których nie napisałeś.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 14.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
A według czego są sortowane te wartości? Być może uda się to zrobić za pomocą dodatkowych warunków, o których nie napisałeś. Właśnie nie bardzo - to 1,1,1,1,2,2,2 itd to jest dodatkowa kolumna, która powstaje wg porównania wierszy bieżącego z poprzednim - warunek niespełniony zostaje ta sama wartość, warunek spełniony nowa wartość (zwiększona o jeden) . Dzięki temu wiem ile mam "grup". Teraz potrzebuję wybrać wartości graniczne - aby przedstawić, że OD WAR_1 DO WAR_2 to jest grupa 1 - OD WAR_3 DO WAR_4 grupa 2 i tak po kolei ja wiem, że mozna to zrobić w PHP czy Smarty (i tak na razie robię), ale mi chodzi o to, żeby spróbować to zrobić w MySQL-u, chociażby po to aby oszczędzić na nadmiarowości danych, wybrac te, które są niezbędne |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Możesz podać praktyczne zastosowanie?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
to jest dodatkowa kolumna, która powstaje wg porównania wierszy bieżącego z poprzednim - warunek niespełniony zostaje ta sama wartość, warunek spełniony nowa wartość (zwiększona o jeden) . Dzięki temu wiem ile mam "grup". Teraz potrzebuję wybrać wartości graniczne - aby przedstawić, że OD WAR_1 DO WAR_2 to jest grupa 1 - OD WAR_3 DO WAR_4 grupa 2 i tak po kolei Być może sam stawiasz sobie przeszkodą i można to rozwiązać w inny sposób. Musiałbyś to jednak bardziej opisać, żebyśmy mogli pomóc. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 14.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Coś tam wykombinowałem polega to na zadeklarowaniu w procedurze kursora, i potem w pętli robie co chcę i byłoby wszystko idealnie gdyby nie mały ale istotny problem.
Potrzebuję w zapytaniu zmiennych zdefiniowanych przez użytkownika chodzi o zmienne zaczynające się od małpy czyli eta czyli @. Wyglądają one tak: SET @v1 = b'1000001'; SET @v2 = CAST(b'1000001' AS UNSIGNED), @v3 = b'1000001'+0; Chcialbym taką zmienną dodać do zapytania, zwyczajnie jest mi potrzebna żeby coś przechować, cos wyliczyć. Z zapytania chciałbym zrobić kursor czyli np DECLARE row_cur CURSOR FOR SELECT kol1,kol2,kol3,@nr:=@nr+1 FROM tab1 WHERE kol1=war_1 AND kol2=war_2; Ale tu zaczyna się problem: 1) nie moge przed DECLARE row_cur CURSOR FOR ustawić SET @nr=1 a bez tego mam nule nie liczby 2) jak coś chcę obliczyć bardziej skomplikowanego to mi się zawiesza zapytanie Jak sobie z tym poradzić, jak to obejść ________________________________________________________________________________ _____________ Poradziłem sobie tak - jeśli ktoś miałby kiedyś podobny problem podaję w punktach 1 - tworzę dwie procedury, jedna wywoływaną w PHP drugą wywoływaną w pierwszej 2 - w tej wywoływanej z PHP umieszczam zmienne użytkownika SET @v1 :=0 itd 3 - potem w procedurze drugiej tworzę kursor z zapytaniem ze zmiennymi użytkownika 4 - w pętli w procedurze drugiej sprawdzam czy się ten numer (z pierwszego wpisu tego wątku, ten co jest w kolumnie) zmienił, jeśli tak to zapisuje do tabeli wynikowej poprzedni i bieżący (wartości graniczne) 5 - pobieram dane z tabeli wynikowej i wysyłam na przeglądarkę nie wklejam kodu bo te dwie procedury to ponad 200 linii jak ktoś będzie miał uwagi, że można to zrobić, lepiej, wydajniej, ładniej itp - chętnie posłucham, chętnie sprawdzę, co prawda działa, ale nie wiem czy działa najlepiej jak może czy da się to jakoś ulepszyć Ten post edytował fragles 15.07.2009, 12:16:12 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 14 Dołączył: 11.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie testowałem, ale sprawdź:
-------------------- SzamanGN
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:31 |