[PHP] Wyszukiwanie, SQL, wyszukiwarka

0

Pomozcie, mam dzisiaj kompletna pustke w glowie :(
Pisze wyszukiwarke na 4programmers.net ktora przeszukuje baze danych ze slowami kluczowymi. Oto struktura tabel:

Struktura tabeli dla coyote_engine

CREATE TABLE coyote_engine (
engine_key mediumint(9) NOT NULL default '0',
engine_spider mediumint(8) NOT NULL default '0',
engine_title_match tinyint(1) NOT NULL default '0',
engine_weight smallint(6) NOT NULL default '0',
KEY engine_key (engine_key)
) TYPE=MyISAM;

--------------------------------------------------------

Struktura tabeli dla coyote_keyword

CREATE TABLE coyote_keyword (
keyword_id mediumint(9) NOT NULL auto_increment,
keyword_keyword varchar(64) NOT NULL default '',
UNIQUE KEY keyword_id (keyword_id),
UNIQUE KEY keyword_keyword (keyword_keyword)
) TYPE=MyISAM;

--------------------------------------------------------

Struktura tabeli dla coyote_side

CREATE TABLE coyote_side (
side_id mediumint(8) NOT NULL auto_increment,
side_url varchar(128) NOT NULL default '',
side_title varchar(100) NOT NULL default '',
side_update int(11) NOT NULL default '0',
side_description tinytext NOT NULL,
side_length mediumint(9) NOT NULL default '0',
UNIQUE KEY spider_id (side_id)
) TYPE=MyISAM;

Problem polega na wyszukiwaniu dwoch wyrazow, ktore wspolnie wystepuja na jednej stronie. Proste wyszukiwanie jednego lub kilku wyrazow sprowadza sie do takigeo zapytania:

[code]SELECT side_id,
side_url,
side_title,
side_description,
keyword_keyword,
engine_spider,
engine_weight
FROM coyote_side,
coyote_keyword,
coyote_engine
WHERE keyword_keyword IN ("delphi", "php")
AND engine_key = keyword_id
AND side_id = engine_spider
ORDER BY engine_title_match DESC, engine_weight DESC[/code]

Powyzsze zapytanie dziala dobrze ale wyszukuje rekordy w ktorych jest albo slowo 'delphi' albo 'php' a my chcemy znalezc rekord, w ktorym wystepuja oba te slowa.

side_id to informacje na temat strony
keyword_id - numer slowa kluczowego (w tabeli dane slowo kluczowe jest unikalne)
keyword_keyword - slowo kluczowe
engine_key - numer slowa kluczowego z tabeli keyword_id

Moze ktos wpadnie na jakis pomysl..

0

A może wystarczy, po prostu:
WHERE keyword_keyword = delphi and
keyword_keyword = php

Pozdro... ;p

0

A może wystarczy, po prostu:
WHERE keyword_keyword = delphi and
keyword_keyword = php

Hej, az takiego zlego dnia dzisiaj nie mam [cygaro] Gdyby to bylo takie proste... podpatrzylem gdzie indziej i wynika z tego ze przypadku kilku slow kluczowych wysylane jest jedno zapytanie dla kazdego z nich, a nastepnie zapisywane do tablic - pozniej porownywane sa wartosci obu tablic - jezeli w obu tablicach jest ten sam link to znaczy, ze w tym linku wystepuja dwa slowa kluczowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1