ďťż
 
procedury ďťż
 
procedury
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • oefg.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com