Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> UDF MYSQL, tworzenie własnej funkcji
misiek172
post 21.05.2010, 16:23:49
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:

  1. SELECT *, isEnd() AS isend FROM tabela ORDER BY DESC


ona musi dla każdego wiersza osobno to obliczyć, bo dla jednego to nie ma problemu:

  1. SELECT *, isEnd('.$id.') AS isend FROM tabela WHERE id="'.$id.'"


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
Go to the top of the page
+Quote Post
Mchl
post 21.05.2010, 16:32:57
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

questionmark.gif
Go to the top of the page
+Quote Post
misiek172
post 21.05.2010, 16:50:25
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
Go to the top of the page
+Quote Post
Mchl
post 21.05.2010, 17:14:21
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?
Go to the top of the page
+Quote Post
misiek172
post 21.05.2010, 17:32:42
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
Go to the top of the page
+Quote Post
Mchl
post 21.05.2010, 19:14:20
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.
Go to the top of the page
+Quote Post
misiek172
post 22.05.2010, 17:26:09
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 smile.gif sam nie wiem o co mi chodziło smile.gif


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 13:52