Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pobieranie danych z bazy
Forum PHP.pl > Forum > Przedszkole
Lirdoner
Witam, mam w bazie takie rekordy
1. dom,podlaskie,chata
2. drzewo,las,grzyby
Tekst który mam do dyspozycji to "las". Chciałbym pobrać ten drugi rekord niestety korzystając z zapytanie z LIKE %las% pobierane są oba. Jak mogę zmienić to zapytanie tak aby pobierało tylko ten drugi rekord?
vermis
Zakładając że pole kolumna nazywa się np. 'tag' , to spróbuj tak
  1. concat(',',tag,',') LIKE '%,las,%'

Powinno zadziałać.
nikestylex7
jeśli pole 2 posiada id w co nie wątpię to możesz zrobić takie coś

  1. $id = "Twoje id";
  2. //tabela to nazwa twojej tabeli w bazie w której masz te swoje nazwy...
  3. $Question = mysql_query("SELECT tabela LIKE %las% WHERE id='$id'");
Lirdoner
Cytat(vermis @ 11.11.2013, 14:38:47 ) *
Zakładając że pole kolumna nazywa się np. 'tag' , to spróbuj tak
  1. concat(',',tag,',') LIKE '%,las,%'

Powinno zadziałać.

A jak np słowo las będzie na pierwszym miejscu? Wtedy to już chyba nie zadziała bo nie będzie przecinka z przodu
mmmmmmm
Cytat(Lirdoner @ 12.11.2013, 20:53:21 ) *
A jak np słowo las będzie na pierwszym miejscu? Wtedy to już chyba nie zadziała bo nie będzie przecinka z przodu

Dlatego na pocztku dodajesz ten przecinek. Nie porównujesz tag, tylko CONCAT(',', tag, ','), czyli dodjesz i na pocztku i na końcu. I jest to jedyne słuszne (oprócz normalizacji) rozwiązanie.
nastu7
To jest jedyne słuszne rozwiązanie tylko dla tego przypadku.

Pobiera 2 rekordy ponieważ w 1 i 2 rekordzie występuje słowo "las", mianowicie w słowie podlaskie oraz las, aby temu zapobiec użyj spacji po słowie, czyli LIKE %las %, bo jeśli to ma być słowo, to na pewno po nim wystąpi spacja.
-maly-
A jesli słowem będzie goLAS, to i na końcu będzie spacja, więc warunek jest zgodny i pobierze mu ten rekord "golas".
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.