procedury
BRobert - 24-12-2006 00:37
procedury
Witam.
Jest sobie tabela w bazie danych (MySQL) przechowująca w jednej kolumnie słowa, a w drugiej ilość wystąpień danego słowa w pewnym tekście tekście.
slowa: | slowo | ilosc | ----------------- |slowo_1| 1| |slowo_2| 10| |slowo_3| 5| ....
kolumna 'slowo' ustawiona jako UNIQUE, więc nie ma możliwości dublowania się słów. Problem polega na tym jak za pomocą jednego zapytania wykonać wstawienie nowego słowa, lub inkrementację wystąpienia słowa zapisanego w bazie. Wiem, że można napisać funkcję, lub procedurę która by takie coś realizowała i ją wywoływać z interesującym mnie słowem jako parametrem i do tego rozwiązania byłbym przekonany. Niestety moja baza nie przyjmuje definicji procedury:
create procedure dodaj_slowo ( IN wyraz char ) BEGIN if ( SELECT `slowo` FROM `slowa` WHERE `slowo` = wyraz) THEN set ilosc = (ilosc + 1) where `slowo` = wyraz ELSE INSERT INTO `slowa` VALUES ( wyraz , 1 ) end if END (Nie jestem przekonany także o poprawności takiej procedury, ale nie przyjmuje również definicji procedur umieszczonych w kursach i książkach o MySQL) zwraca mi taki błąd: #1064 - Something is wrong in your syntax obok 'procedure dodaj_slowo ( IN wyraz char ) BEGIN if ( SELECT `slo' w linii 1
ewentualnie próba inkrementacji wystąpienia wyrazu i jeśli nie przetworzono by żadnego wiersza to dodanie nowego rekordu, niestety nie wiem jak z poziomu MySQL'a sprawdzić ilość przetworzonych wierszy, select ROW_COUNT() nie działa i zwraca błąd: #1064 - Something is wrong in your syntax obok '()' w linii 1
Ma ktoś jakiś pomysł jak to obejść, ewentualnie inne rozwiązanie tego problemu?? Obsługa bazy z poziomu PERL'a, gdyby to mogło w czymś pomóc
Pozdrawiam -- _______________ Robert Błoński kom. 606839922 GG: 1662254
Maciek Dobrzanski - 24-12-2006 00:37
"BRobert" <boouli@o2.pl> wrote in message news:em6692$cv$1@atlantis.news.tpi.pl... > Witam.
> kolumna 'slowo' ustawiona jako UNIQUE, więc nie ma możliwości dublowania > się słów. Problem polega na tym jak za pomocą jednego zapytania wykonać > wstawienie nowego słowa, lub inkrementację wystąpienia słowa zapisanego w > bazie. [..ciach straszne straszności :)..]
Poczytaj o INSERT INTO ... ON DUPLICATE KEY UPDATE ...
Maciek
BRobert - 24-12-2006 00:37
Maciek Dobrzanski napisał(a) do Roberta:: > "BRobert" <boouli@o2.pl> wrote in message > news:em6692$cv$1@atlantis.news.tpi.pl... >> Witam. > >> kolumna 'slowo' ustawiona jako UNIQUE, więc nie ma możliwości dublowania >> się słów. Problem polega na tym jak za pomocą jednego zapytania wykonać >> wstawienie nowego słowa, lub inkrementację wystąpienia słowa zapisanego w >> bazie. > [..ciach straszne straszności :)..] > > Poczytaj o INSERT INTO ... ON DUPLICATE KEY UPDATE ... > > Maciek > > Dzięki wielkie, zadziałało, też kiedyś myślałem o takim rozwiązaniu, niestety nie sprawdziłem od której wersji ...ON DUPLICATE KEY... jest obsługiwane, pomógł upgrade bazy
Pozdrawiam
-- _______________ Robert Błoński kom. 606839922 GG: 1662254
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
sleep
Monitoring Oracle
[MySQL] Bazka zwalnia - jak diagnozować.
=?iso-8859-2?q?PG_Admin_-_wszyscy_widz=B1_struktur=EA...?=
Zapytanie sql
grafika fraktalowa
kalibracja monitora
=?iso-8859-2?Q?=5BMSSQL2005=5D_Zawarto=B6c_kolumny_varbinary= 28max=29_?=
=?ISO-8859-2?Q?[Oracle]_wywo=B3anie_funkcji_z_from?=
Baza Urzedow Skarbowych w Polsce
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|