Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka z 2 tabeli
banki
post 22.12.2013, 11:54:20
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Witam,

mam pewien problem z wyszukiwarką.

W tabeli sql mam 2 kolumny tytul i opis. Dla przykładu zawartość tytul to "Metallica - Nothing else matters" a w opisie dałem formułkę "Lorem ipsum...".

Próbuję zrobić wyszukiwarkę aby wpisując "Metallica Lipsum" zwróciła mi właśnie ten rekord. Póki co nawet nie zwraca mi tego rekordu jeśli wpisuje "Metallica else".

  1. SELECT * FROM wideo WHERE tytul LIKE '%$szu%' OR tytul LIKE '$szu%' OR tytul LIKE '%$szu' OR opis LIKE '%$szu%' OR opis LIKE '$szu%' OR opis LIKE '%$szu'


Nie mam pojęcia jak sformułować zapytanie, o ile w ogóle da się takowe zrobić w jednym ciągu.

Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
Scalak
post 22.12.2013, 12:12:58
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 16
Dołączył: 21.03.2009

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


może coś w stylu:

SELECT concat(tytul,' ',opis) as tym FROM wideo having tym regexp '(Metallica|Lipsum)'

odpowiednie wyrażenie regularne pozostawiam Twoim rozważaniom wink.gif

Przedświąteczna Pozdrówka
Scalak

Ten post edytował Scalak 22.12.2013, 12:13:36
Go to the top of the page
+Quote Post
Pyton_000
post 22.12.2013, 15:46:50
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Po 1 primo robienie
Cytat
LIKE '%cos%' OR LIKE 'cos%' OR LIKE '%cos'

jest totalną bzdurą która nic nie daje. Wyrażenia "%cos%" zaspokaja wszystkie ww. więc 2 pozostałe nie dadzą żadnego pozytywnego efektu.

Po 2 secundo skoro szukasz "Metallica Lipsum" to ta fraza jest szukana w CAŁOŚCI pomiędzy wyrazami. Poza tym taka fraza nie występuje u Ciebie w żadnym polu.
Tak samo jest z "Metallica else". Nie występuje jako taki podany ciąg. Bo "Metallica - Nothing else matters" nie zawiera dokładnie takiego ciągu "Metallica else".

Musiałbyś każdą spację zamieniać na % co jest lekko mówiąc szaleństwem.
Go to the top of the page
+Quote Post
banki
post 26.12.2013, 22:29:14
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Cytat(Pyton_000 @ 22.12.2013, 15:46:50 ) *
Musiałbyś każdą spację zamieniać na % co jest lekko mówiąc szaleństwem.


Więc jak zrobić takową wyszukiwarkę?
Go to the top of the page
+Quote Post
Scalak
post 26.12.2013, 23:35:03
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 16
Dołączył: 21.03.2009

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


a moje zapytanie jest złe?
Go to the top of the page
+Quote Post
banki
post 28.12.2013, 16:46:40
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Cytat(Scalak @ 26.12.2013, 23:35:03 ) *
a moje zapytanie jest złe?


nie pokazuje mi wyników jeśli wpiszę np Metallica else, chyba że ja coś źle robię
bo podmieniłem tekst wpisany w wyszukiwarkę tutaj:
having tym regexp '($szukaj|$szukaj)'
Go to the top of the page
+Quote Post
Scalak
post 28.12.2013, 18:01:57
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 16
Dołączył: 21.03.2009

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


  1. SELECT concat(tytul,' ',opis) AS tym FROM wideo HAVING tym REGEXP '(Metallica|Lipsum)'


przetestuj bezpośrednio przez phpmyadmin na konkretnych danych. U mnie działa.
Concat "sumuje" dwie kolumny, odziela je spacją. Having jest odpowiednikiem where (odsyłam do googli). Regexp pozwala wyszukiwane wyrażenie podać w postaci wyrażenia regularnego.

Jeśli Ci nie będzie działac umieść proszę na jakiejś wklejce dump Twoich tabel - zerknę.

Ten post edytował Scalak 28.12.2013, 18:04:09
Go to the top of the page
+Quote Post
mmmmmmm
post 28.12.2013, 20:03:44
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


HAVING jest odpowiedniekim WHERE... Niezłe... smile.gif Zwłaszcza w zapytaniach nie-agregujących... Ustaw sobie SQL_MODE na ANSI, a się przekonasz, czy masz rację.
Go to the top of the page
+Quote Post
Scalak
post 28.12.2013, 20:29:55
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 16
Dołączył: 21.03.2009

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


a czy ja napisałem że w nieagregujących? Użyłem swoistej analogi do zapytania zaproponowanego przez autora wątku - złej? Nie wnikam w agregację... sądzę, że Go to .......

Ten post edytował Scalak 28.12.2013, 20:48:30
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 18:31