Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UDF MYSQL
Forum PHP.pl > Forum > Bazy danych > MySQL
misiek172
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.
Mchl
Kod
SELECT *, isEnd(id) AS isend FROM tabela

questionmark.gif
misiek172
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.
Mchl
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?
misiek172
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
Mchl
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.
misiek172
przepracowany byłem smile.gif sam nie wiem o co mi chodziło smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.