Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Długie zapytanie SQL
ahold
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

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


Witam,

Mam pewien problem, potrzebuję wydać do serwera SQL za "jednym zamachem" bardzo długoe zapytanie.

Może mieć od 20 - 50 (!sic) parametrów.

Na szczęscie porównywane dane są w 100 % statyczne.

przykład: wyświetl materiały gdzie tytul jest równy "ala ma kota a kot ma ale" .

ma więc zostać wykonane takie coś:
  1. <?php
  2. SELECT xxx from tabela where tytul='ala' OR tytul='ma' OR tytul='kota' OR tytul='a' OR (....)  i tak do ko&#324;ca.
  3. ?>

Przy 50 "ORach" , serwer sqł się wyłożył i uciął w połowie moje zapytanie.
phpMyAdmin pokazał to samo (...) i zignorował resztę która była mniej więcej od połowy.

Pytanie teraz co zrobić.

Próbowałem użyć komendy

  1. <?php
  2. SELECT *, MATCH(tytul) AGAINST ('ala ma kota a kot ma ale') AS wartosc
  3. ?>

Ale, np tekst w stylu kota, był wykrywany przez np kotsa, ktosa, posia, zosia.
Wiadomo że miał inną "wartość" ale nie było jednoznaczne.

W tym wypadku muszę mieć 100 % pewność że wartość się zgadza.

Mogę zrobić to w pętli PHP, ale wysłanie 50 zapytań do serwera bazodanowego pod rząd z tekstem where xxx='xx' end zapytania, obliczenie rezultatu, kolejne zapytanie (...) - w prostej linii spowoduję utratę pracy.- I cachowanie nie pomoże (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)



Ewentualnie może Macie jakąś koncepcję, to podam co chce osiągnąć.

Mamy dwa miasta
"poznań", "wrocław".

(nazwa pola = miasto)
teraz mamy pole tytulu
nazwa pola = tytul

i muszę wydrukować z serwera

powtarzające się rezultaty dla 2 miast.

Moja koncepcja zakładała by pobrać napierw jedno miasto, poznań - zrobić listę TOP 50 nazw tytułów " or tytul1 or tytul 2 "

nastepnie zadać to zapytanie dopisujac WHERE miasto=wroclaw, i dostanę listę ile z tych tytułów powtarza się we wrocławiu.

Może dało by się to zrobić na poziomie jednego zapytania SQL.


dokładnie to chcę osiągnąć:
(IMG:http://img233.imageshack.us/img233/4671/wykres.th.png)

Muszę wydrukowac listę materiałów które sa z "poznania" i "wroclawia" oraz zawierające taki sam tytuł.

Ten post edytował ahold 10.07.2009, 22:22:31
Powód edycji: [erix] się robi
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
maly_swd
post
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


a takie cos?
SELECT xxx from tabela where tytul in ('ala', 'ma', 'kota', 'a', 'kot', 'ma', wpier...')

oczywiscie wczesniej mozesz zoptymalizowac tablice aby nie bylo np 2x 'ma', lub krotkich wyrazow 'a' 'to'...
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 14:25