Autor | Zpráva | ||
---|---|---|---|
Jen Profil * |
#1 · Zasláno: 14. 1. 2007, 23:23:33
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 * |
#2 · Zasláno: 15. 1. 2007, 10:39:23
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 * |
#3 · Zasláno: 15. 1. 2007, 23:00:15
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 * |
#4 · Zasláno: 16. 1. 2007, 10:21:13
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 * |
#5 · Zasláno: 16. 1. 2007, 15:33:32
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 |
#6 · Zasláno: 16. 1. 2007, 16:46:45
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 * |
#7 · Zasláno: 16. 1. 2007, 17:50:09
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.
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0