Autor Zpráva
Jen
Profil *
Dobrý den,

jak by vypadal sql dotaz, který by prohledával sloupce tří tabulek. Mějme tento dotaz:

SELECT * FROM products,vendors,keywords WHERE keywords.kid = products.pkeyword AND productsvid = vendors.vid AND MATCH (pname, pdescription,keyword,vname) AGAINST ("search")

a vyhledávaný výraz "notebook Sony Vaio". Slovo notebook se náchází ve sloupci 'keyword', Sony v 'vname' a výraz Vaio je součástí 'pname'.

Výše uvedený sql výraz nefunguje. Jakým způsobem vytvořit indexy v databázi MySQL a jak sestavit sql dotaz pro uvedený příklad z praxe?

Znáte nějaké lepší řešení?

Předem děkuji za odpovědi, Jen
Kajman_
Profil *
Výše uvedený sql výraz nefunguje.

Máte vytvořen fulltextový index na těch čtyřech sloupečcích? A hledáte "notebook Sony Vaio" nebo "search"?
Jen
Profil *
Fulltextový index je vytvořen na všech sloupcích a vyhledávám "notebook Sony Vaio".

Objevuje se chyba: #1210 - Wrong arguments to MATCH

V čem může být chyba?
Kajman_
Profil *
Ještě jednou bych zkontroloval, zda jsou všechny čtyři sloupečky pname, pdescription,keyword,vname v jedné tabulce. Je na nich všech dohromady udělán jeden fulltextových index. A možná bych dával vyhledávaný řetězec do jednoduchých uvozovek (ale to je otázka nastavení serveru).
Jen
Profil *
V tom možná bude problém, uvádím již v prvním příspěvku, že indexy jsou ve třech tabulkách. Jak v takovém případě postupovat?
YoSarin
Profil
Jen
Co generovat pohled (view)? Moc tomu nerozumím, ale to by snad mohlo pomoct... záleží jak často se ty tabulky aktualizují...
Jen
Profil *
Tabulky se aktualizují denně. Této problematice příliš nerozumím. Hledám nejsnažší řešení. Nebylo by lepší namísto Fulltextu použít LIKE = '%search%' ? Netuším jak je to s rychlostí vykonání sql dotazu.
Toto téma je uzamčeno. Odpověď nelze zaslat.