Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]SELECT WHERE tags zawiera 'słowo';
Forum PHP.pl > Forum > Przedszkole
Micky
Gromadzę w bazie elementy, którym można przypisywać tagi, które są wpisywane w jednej kolumnie rozdzielone przecinkami. Chcę poprzez wyszukiwarkę napisaną w PHP znaleźć wszystkie elementy, które mają dany tag. Może powinienem to inaczej skonstruować? Jak? Jakaś osobna tabela w bazie danych? Nie mam pojęcia.

Szukałem długo w internecie i w mojej Biblii PHP5 MySQL i nie mogę znaleźć choć jest to bardzo dziwne.
Jak zbudować zapytanie SELECT do bazy, które wyświetli rekordy, które w polu "tags" mają wartość która zawiera podane wyrażenie "słowo".

Sądzę że jest to częsty przypadek dlatego bardzo dziwi mnie fakt, że niemogłem tego znaleźć.
Gromadzę w bazie elementy, którym można przypisywać tagi, które są wpisywane w jednej kolumnie rozdzielone przecinkami. Chcę poprzez wyszukiwarkę napisaną w PHP znaleźć wszystkie elementy, które mają dany tag. Może powinienem to inaczej skonstruować? Jak? Jakaś osobna tabela w bazie danych? Nie mam pojęcia.
Skie
Kod
SELECT * FROM tabela WHERE tags LIKE '%wyrazenie%';
zbig
Witam!

Like nie zawsze sie sprawdzi poniewaz
1. Jezeli masz np auto i autogielda przy wyszukiwaniu LIKE '%auto%' znajdziesz oba slowa ( a pewnie jeszcze wiecej biggrin.gif )
2. Jest ciezki dla mysql-a

Aby wyszukac konkretne slowo polecam

  1. <?php
  2. SELECT * FROM tabela WHERE tags RLIKE 'wyrazenie';
  3. ?>


Z tym ze w tym przypadku lepiej porozdzielac slowa spacjami

Pozdrawiam
sowiq
@zbig,
chcesz powiedzieć, że wyrażenie regularne (RLIKE) jest szybsze niż proste dopasowanie (LIKE)? Toż to jak porównanie preg_match" title="Zobacz w manualu PHP" target="_manual i strpos" title="Zobacz w manualu PHP" target="_manual.
Bardzo chętnie dowiem się czemu tak uważasz.
planet
a ja bym proponował przenieść tagi do osobnej tabeli i poszczególne elementy łączyć za pomocą tabeli pośredniej. wtedy chyba jest łatwiej zarządzać tagami.
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.