Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: k³opot z LIKE
Forum PHP.pl > Forum > Bazy danych > MySQL
acztery
Witam mam k³opot i nie mam pomys³u, chodzi o LIKE

mam w bazie ok 700 tagów

np:

³ysienie
³ycienie plackowate
³ysienie analogiczne

i teraz

jezeli tak LIKE '%³ysienie%' znajduje te 3 a ma tylko ten 1... i analogicznie z innymi
nospor
Cytat
znajduje te 3 a ma tylko ten 1
jesli moglbyc to przetlumaczyc na nasz, polski, to byloby milo winksmiley.jpg
acztery
ale ok ja¶niej

mam np takie dane w bazie

³ysienie
³ycienie plackowate
³ysienie analogiczne

jak wykonam .... Tag LIKE '%³ysienie%' ..... to mysql zwróci mi te trzy rekordy ( patrz wy¿ej ) a ma zwróciæ dok³adnie tylko te gdzie wystepuje tylko s³owo ³ysienie bez ¿adnych przyrostków...
phpion
To wywal te % czyli:
  1. Tag LIKE '³ysienie'

ale to wtedy mozna spokojnie zast±piæ:
  1. Tag = '³ysienie'

O to chodzi³o?
acztery
Sprawa wyglada tak.

Troszkê to opisze bo skrawki wiadomo¶ci mog± ma³o Wam mówiæ..


Wiec. Po pierwsze mam bazê tagów w 1 tabeli , w 2 tabeli sa artyku³y. Ka¿dy artyku³ mo¿e mieæ swoje tagi.

I teraz w panelu admina mamy select gdzie jest lista tagów i zaznaczone sa te które s± przypisane do danego art.

jezeli w liscie zaznaczymy tag ³ysienie analogicznie to pó¿niej mamy zaznacozny tez tag ³ysienie.

Tagi dla art przechowuje w 1 kolumnie o nazwie Tag oddzielone znakiem "|"..

PS

problem rozwi±za³em

... Tag LIKE '%lysienie|%'

to tyle dzieki za pomoc..
nrm
masz ¿le zaprojektowan± bazê
acztery
Normanos czy ja wiem juz w tej chwili pobranie listy art wi±ze siê z po³±czenie z 3/4 innymi tabelami jak dojdzie do tego jeszcze 1 tylko poto aby obs³ugiwaæ tagi to nie wiem czy to wydajne rozwi±zanie.

Tak to tylko operacja na tagach odbywa sie przy dodaniu/edycji art

a tak za kazdem razem musial bym analizowac tabele z tagami.

PS troszkê zamieszania zrobi³em

normanos sugerujesz ze do obs³ugi tagów potrzeba 3 tabele

1. tabela z art
2. tabela z wszystkimi tagami w bazie
3. trabela z tagami ktore sa przypisane do danych art.
nospor
Cytat
nie musisz mentrkowaæ...
jedynie grzecznie poprosilem o lepszy opis, bo te skrawki na poczatku jak sam przyznalez nic nie mowily. Pominoles rowniez tak wazny szczegol jak trzymasz dane w bazie. Nie wiem oco wiec sie obruszasz...

Cytat
normanos sugerujesz ze do obs³ugi tagów potrzeba 3 tabele

1. tabela z art
2. tabela z wszystkimi tagami w bazie
3. trabela z tagami ktore sa przypisane do danych art.
Tak, zdecydowanie lepsze rozwi±zanie od tego co masz teraz
acztery
i bede ³±czy³ siê z 6 tabelami poto by wylistowac rekordy.. ? mo¿e tak zrobie ale teraz to zostawie chodzi szybko..

co do mentrkowania usuno³em ten tekst,a ty to wygrzeba³e¶...

pozdro
nrm
tak, tak twierdze winksmiley.jpg to zreszt± klasyczny przypadek wiele-do-wielu.

co to jest dodatkowe 1 czy 2 pytania sql? Nic, bekniêcie po obiadku... winksmiley.jpg
acztery
spoko ale czy to wiele-do-wielu nie bedzie mia³o wp³ywu na czas...
nospor
Cytat
co do mentrkowania usuno³em ten tekst,a ty to wygrzeba³e¶...
Nie wygrzebalem a przeczytalem w mailu, ktory dostalem smile.gif

Cytat
i bede ³±czy³ siê z 6 tabelami poto by wylistowac rekordy.. ?
Nie wnikam z iloma jeszcze tabelami siê ³±czysz. Zgadzam siê jedynie z normanosem ze twoja obecna struktura na tagi jest nienajlepsza i napewno nie szybsza od rozwi±zania z oddzielnymi tabelami. Pozatym Twoje rozwi±zanie jest nieelaganckie, nie daje takiej mozliwosci jakie daj± relacje na dobrze zrobionej bazie
manro
Je¿eli zale¿y ci tak bardzo na szybko¶ci bardziej wydajne bêdzie korzystanie z trzech tabel i instrukcji porównania = (znak równa siê)
w celu wyszukania odpowiedniego tag'a

Kod
... WHERE Tag = '³ysienie' ...


Wykonuj±c SELECT'a z instrukcj± LIKE zmuszasz bazê danych do przeszukania wszystkich wierszy tabeli za ka¿dym
razem gdy wykonujesz takie zapytanie. Jednak, ¿e ró¿nicê czasow± odczujesz dopiero przy tabelach z du¿± ilo¶ci± wierszy.

Na danych atomowych mo¿emy za³o¿yæ indeksy które znacznie skróc± czas przeszukiwania tabeli w poszukiwaniu odpowiedniej warto¶ci.

Poza tym separuj±c dane w jednej kolumnie znakiem | ³amiesz zasadê atomowo¶ci danych dlatego projekt nie jest do koñca w³a¶ciwy

I co najwa¿niejsze wszystkie dane pobierasz w jednym dobrze skonstruowanym zapytaniu SQL,
nie ma sensu traciæ czasu na ponowne wys³anie ¿±dania i czekaniu na jego odpowied¼.
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.