Jak przeszukiwać tabelę w MySQL?

Jak przeszukiwać tabelę w MySQL?
Pan Herbaciarz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Siemka, a więc mam w tabeli w stringu:

Ania,Tomek,Zuzia,Roksana
jak mogę wyszukać gdzie jest np. Tomek jednocześnie nie zwracając gdy ktoś wpisze Omek ? :D
To działa mi tylko gdy przecienk jest na końcu :<

Kopiuj
$resultend = mysql_query("SELECT * FROM `tabela` WHERE osoba LIKE '%$search,%'");

zamiana znacznika <code class="sql"> na <code class="php"> - @furious programming

  • Rejestracja: dni
  • Ostatnio: dni
0

załóż fulltext index na tej kolumnie, to da Ci dostęp do zaawansowanych funkcji wyszukiwania w tekście

http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

to

Kopiuj
SELECT * FROM `tabela` WHERE osoba LIKE '%tomek%'

NIGDY nie zwróci frazy omek, zwróci np. atomek ale NIE omek
BTW jesli w polu osoba jest tylko jedno imię to zamiast LIKE powinno być = jeśli natomiast jest tam kilka imion to masz źle zaprojektowaną bazę

Pan Herbaciarz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

@up A gdy ktoś wpisze

Kopiuj
SELECT * FROM `tabela` WHERE osoba LIKE '%omek%'

również to zwróci :/

Tak mam tam więcej imion, jak poleciłbyś przerobić bazę? :v

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

tak aby jedno imię było w jednej kolumnie. Jak chcesz konkretów to napisz co tam konkretnie trzymasz

Pan Herbaciarz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Konkretnie trzymam tam zbiór "tagów" :D czyli. 'a,b,c,d,e,f,g,h' i kiedy ktoś wpisze np. d to zwróci mu wszystkie rekordy zawierające tag z tą frazą :P

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
2

jeśli koniecznie chcesz je tak trzymać to zapisuj je tak: ;tag 1;tag 2;tag 3; i wtedy wyszukuj tak tag LIKE '%;tag 2;%'

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.