![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Od niedawna zacząłem dość często korzystać z tworzenia własnych funkcji MySQL (w celu zmniejszenia ilości zapytań). Doszło do momentu gdzie mam ciężki orzech do zgryzienia i proszę o pomoc, mianowicie: Pobieram 5 rekordów, w tych rekordach sa 2 kolumny o nazwie start_time i time, muszę funkcją dodać je do siebie, odjąć od czasu aktualnego i wyświetlić w osobnej kolumnie, niby proste ale chodzi o to że jak zrobić aby funkcja wiedziała żeby pobrac te kolumny z danego wiersza w sensie:
ona musi dla każdego wiersza osobno to obliczyć, bo dla jednego to nie ma problemu:
Tylko że przy pobieraniu całej tabeli nie mam jak podac id dla kazdego wiersza, czyli jak zrobić aby funkcja pobierała dane z odpowiedniego wiersza. Sory ale nie wiem jak to dobrze wytłumaczyć....... Pozdrawiam, Łukasz. -------------------- zmoderowano - waga i rozmiar
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT *, isEnd(id) AS isend FROM tabela ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Mchl chodzi o MySQL UDF's, czyli user-defined functions
czytam tutaj takie rzeczy: http://forums.mysql.com/read.php?102,354396,354396 domyślam się że trzeba użyć tzw. CURSORS. Lecz to ciężkie trochę, mało artykułów polskich, właściwie żadnego nie znalazłem. -------------------- zmoderowano - waga i rozmiar
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Ja rozumiem, że o to Ci chodzi, tylko nie bardzo rozumiem Twój problem. Jeśli wywołasz funkcję z nazwą kolumny jako argumentem, to wartość kolumny dla danego wiersza będzie dostępna wewnątrz funkcji. Czyli jak podasz kolumnę id, będziesz miał w funkcji id aktualnego wiersza.
Może gdybyś pokazał co jest wewnątrz tej funkcji to coś by się wyjaśniło? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
chodzi mi o to żeby funkcja po prostu wykonywała się dla wywołanego wiersza, nie mozna okreslić Id dla funkcji bo
jak pobieram n wierszy: SELECT *, funkcja() FROM tabela ORDER BY DESC to dla kazdego wiersza ma obliczyc funkcja np danych z tego wiersza znalazłem coś fajnego, powinienem sobei poradzić: http://maga.ovh.org/blog/?cat=8 -------------------- zmoderowano - waga i rozmiar
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Nadal nie rozumiem Twojego problemu.
Jak masz na przykład Kod SELECT id, COS(id) AS cosinus FROM tabela to COS(id) dla każdego wiersza zwróci wartość funkcji trygonometrycznej od id tego wiersza. Tak samo z funkcją zdefiniowaną przez użytkownika. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
przepracowany byłem
![]() ![]() -------------------- zmoderowano - waga i rozmiar
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 13:52 |