Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> IF/CASE - Operacje warunkowe na tekstach, sprawdzenie czy tekst istnieje i wykonanie zapytania
shimano
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


Witam.

Slecze juz dobrch kilka godzin nad IF i CASE w MYSQLu i nie moge dojsc do rozwiazania. Przeczytalem setki metrow stron i manuali i nic.

Konkretnie chodzi o to, zeby zrobic cos takiego:

Tabela:
- Pola:
-- id
-- tresc

id - wiadomo; tresc - jakis przykladowy tekst wielowyrazowy.

I teraz caly bajer w tym, zeby zrobic zapytanie, ktore sprawdzaloby najpierw, czy np. "pies" figuruje w polu tresc, jezeli tak, to usunac to, a jezeli nie to dopisac np. na koncu.

Wsumie wszystko co bedzie do tego potrzebne juz opanowalem, poza tym, jak zrobic te sprawdzenie i ewentualne dalsze wykonanie danego dzialania w zaleznosci od wyniku sprawdzania

Na moj rozum to mogloby to byc cos na styl:
  1. CASE
  2. WHEN
  3. (SELECT `tresc` FROM `test` WHERE `id`='1' AND `tresc` LIKE '%pies%' LIMIT 1 )
  4. THEN
  5. (UPDATE `test` SET `tresc`=(REPLACE(tresc, "pies", "")))
  6. WHEN
  7. (SELECT `tresc` FROM `test` WHERE `id`='1' AND `tresc` NOT LIKE '%pies%' LIMIT 1 )
  8. THEN
  9. (UPDATE `test` SET `tresc`=CONCAT('pies', tresc))
  10. END;


Jednak cos takiego nie dziala i wsumie sie nie dziwie, aczkolwiek milo by bylo, gdyby ktos podsunal pomysl jak to rozwiazac, aby zadzialalo?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


nie lepiej zrobić to po stronie php'a ? czyli jeżeli znajdzie wiersz to update jeżeli nie to nie ?

Ten post edytował melkorm 26.06.2009, 00:21:31
Go to the top of the page
+Quote Post
shimano
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


Cytat(melkorm @ 26.06.2009, 00:21:15 ) *
nie lepiej zrobić to po stronie php'a ? czyli jeżeli znajdzie wiersz to update jeżeli nie to nie ?


To by bylo zbyt proste i zbyt duzo miejsca by zajmowalo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(shimano @ 26.06.2009, 08:49:59 ) *
To by bylo zbyt proste i zbyt duzo miejsca by zajmowalo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Miejsca gdzie w edytorze (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) A słyszaj kolega o terminie "wydajność"
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale kombinacje alpejskie

  1. UPDATE tabela SET pole = IF (tuwaruneknaistnieniezadanegociagu, tureplace,tudopisanie)

Proste, lekkie i przyjemne.
Zapytanie w IF uzupelnij sobie sam. Tu masz niezbedne funkcje
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
Go to the top of the page
+Quote Post
shimano
post
Post #6





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


Cytat(skowron-line @ 26.06.2009, 11:00:37 ) *
Miejsca gdzie w edytorze (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) A słyszaj kolega o terminie "wydajność"


Od kiedy to wiele instrukcji php + wiele zapytan do mysql jest wydajniejsze od jednego zapytania sql? Gratuluje koledze wydajnych aplikacji przy takim toku myslenia.
A co do miejsca to wlasnie odnosi sie to do wydajnosci.

Cytat(nospor @ 26.06.2009, 11:07:02 ) *
ale kombinacje alpejskie

  1. UPDATE tabela SET pole = IF (tuwaruneknaistnieniezadanegociagu, tureplace,tudopisanie)

Proste, lekkie i przyjemne.
Zapytanie w IF uzupelnij sobie sam. Tu masz niezbedne funkcje
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html


Jakos nie wiele mi to pomaga;/ Jak juz pisalem wczesniej, przesiedzialem wiele godzin nad CASE'ami oraz IF'ami ale nie moge nic wymyslec.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jakos nie wiele mi to pomaga;/


(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
PRzeciez ja ci podalem rozwiązanie niemalze na dloni. Ty jedynie musisz wstawic rzeczy.
tureplace - replace ktory juz masz w kodzie
tudopisanie - concat ktory juz masz w kodzie
tuwaruneknaistnieniezadanegociagu - glupie LOCATE, ktore jest w linku co ci podalem

Cytat
Jak juz pisalem wczesniej, przesiedzialem wiele godzin nad CASE'ami oraz IF'ami ale nie moge nic wymyslec.
To co ty napisales to jakies dzikie kombinacje alpejskie. Ja ci podalem prosty update jako szablon a ty musisz tam wstawic to co chcesz. Kurcze, pomysl troche, bo to proste jak budowa cepa
Go to the top of the page
+Quote Post
shimano
post
Post #8





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


No wkoncu udalo mi sie!

  1. UPDATE `test`
  2. SET `tresc` = (CASE
  3. WHEN `tresc` LIKE '%pies%'
  4. THEN
  5. REPLACE(tresc, 'pies', '')
  6. WHEN `tresc` NOT LIKE '%pies%'
  7. THEN
  8. CONCAT(tresc, 'pies')
  9. END)
  10. WHERE `id`='1'


Oraz analogicznie do IF
  1. UPDATE `test`
  2. SET `tresc` = IF(
  3. `tresc` LIKE '%pies%',
  4. REPLACE(tresc, '', ''),
  5. CONCAT(tresc, 'pies')
  6. )
  7. WHERE `id`='1';


Caly czas bylem blisko, tylko moj blad lezal w skladni warunku. Zamiast poprostu krotko "`tresc` LIKE `%pies%`" to sie niepotrzebnie rozwijalem z "SELECT `tresc` FROM `test` WHERE `id`='1' AND `tresc` LIKE '%pies%' LIMIT 1"

Proste;)

I jeszcze male sprostowanie, dlaczego zalezalo mi bardziej na CASE, niz IF - poprostu moge obsluzyc wiecej warunkow... Ktorych bedzie kilka;)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 01:46