Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

leonik86

Prosty problem z MySQLem

Polecane posty

Witam, mam naprawdę głupi problem z mySQLem a po godzinnym googlowaniu ciągle nic...

Przykładowo - mam tabelkę z dwoma kolumnami. Pierwsza to int z AUTO_INCREMENT (po naszemu - liczba porządkowa) zaś druga to jakaś wartość w double. Teraz, jeśli mam procedurę PROC(nr real) to czy dałoby się wstawić tego doubla tak, żeby zidentyfikować go po int?

Prościej: chcę, żeby zwracało mi PROC(double_od_int).

Od razu uprzedzam, że jestem - póki co - nieco z mySQLem do tyłu więc prosiłbym o przykłady (poza napisaniem jednej funkcji w Javie raczej nie będę się z tym bawił więcej).

Link do komentarza
Udostępnij na innych stronach

Nie do końca rozumiem o co ci chodzi...

Czy chcesz, żeby ta procedura zwracała ci numer porządkowy, do którego wpisana jest liczba double?

A może chcesz, żeby procedura zwróciła liczbę double przyporządkowaną do określonego numeru porządkowego?

Link do komentarza
Udostępnij na innych stronach

Tak, ale jeżeli wpiszę:

CALL PROC(SELECT tabela_z_double FROM nazwa_bazy WHERE tabela_z_int=liczba) to mi zwraca syntax error :/

Tak przy okazji - na razie to rozwiązałem to metodą mocno młotkową, czyli sczytuję wyniki do Javy do postaci double a potem wysyłam już zapytanie do bazy. Średnio mnie to satysfakcjonuje, szczególnie, że mi właśnie o to chodzi aby wszystko dokonywało się na SQLu (czyli przepisanie funkcji do Javy odpada).

Link do komentarza
Udostępnij na innych stronach

W sumie w ten sposób się nie bawiłem, żeby SQL-owe procedury wywoływać z takim wymyślnym parametrem.

Najprostszy pomysl jakim mi przychodzi do głowy, żeby to obejść, to napisać Procedurę, której argumentem będzie ten int, który Cie ineteresuje. Potem wywołać zapytanie zwracające Ci tą wartość double, przypisać to do jakiejś zmiennej w ramach tej nowej prodedury i wywołać tę właściwą procedurę ze zmienną jako argumentem.

Link do komentarza
Udostępnij na innych stronach

To w takim razie pytanko - jak z zapytania przejść do zmiennej? Tzn. mam zdefiniowaną zmienną D (double), jak jej przypisać konkretną wartość z tabeli?

czyli:

id value

1 jakas_wartosc_1

2 jakas_wartosc_2

3 jakas_wartosc_3

itp

Jak zrobic, zeby moje D = jakas_wartosc_1? Bo tak naprawdę to do tego mój cały problem się chyba sprowadza...

Link do komentarza
Udostępnij na innych stronach

Po prostu Select nie tak działa... Składnia jest następująca:

SELECT <nazwa_pola> FROM <nazwa_tabeli> WHERE <nazwa_pola, nie musi być to samo ;)>=<wartość>;

Ponadto to ci zwróci dopiero rekordy (nie jestem pewien w jakim języku piszesz, więc nie wiem w jakim formacie to dostaniesz), z których musisz wyciągnąć samą wartość.

Przykład:

SELECT value FROM tabela_doubli WHERE id=1;

Link do komentarza
Udostępnij na innych stronach

Problem nieco się uprościł, lecz na jego miejsce pojawił się zaraz nowy.

Problemem moim jest to, że mySQL i SELECT zwracają zawsze tablicę wyników. A tablica to nie to samo co wynik, więc i nie można go przypisać do jednej zmiennej.

Prawidłowa składnia, która rozwiązywałaby mój problem powyższy wyglądałaby tak:

SELECT id, value, PROC(value) WHERE id=<żądana liczba porządkowa> AS outcome

Wyrzuci mi to taką tabelkę:

id value outcome

N wartN wynikN

itp.

Problemem jest - teraz chciałbym zrobić coś nieco trudniejszego. Chodzi mi mianowicie o procedurę, której argumentem byłyby dwie zmienne: PROC(d1 real, d2 real) przy czym obie byłyby brane z tej samej kolumny, ale różnych wierszy.

PROC(wart1, wart2).

Jakieś pomysły?

Tak na koniec - piszę w Javie i jej JDBC. I mySQL.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...