Autor Zpráva
Watchick
Profil
tabulka uzivatele:
id  	int(11)
nick 	varchar(100)


tabulka skupiny:
id  	int(11)
nazev varchar(100)

Chtěl bych poradit/popřípadě odkaz na hotový kód, jak by nějaké efektivní SQL dotaz dokázal vyhodit co nejrelevantnější výsledky najednou z obou tabulek, a abych z těch momentálně poznal z jaké tabulky jsou (třeba něco jako typ=1 pro uzivatele a typ=2 pro skupiny)

Moc děkuji všem

Watchick
cistax
Profil
Mohl bys to prosím trochu více rozvést?
Watchick
Profil
Zatím jsem používal něšco takového:
SELECT id FROM uzivatele WHERE MATCH(`nick`) AGAINST ('".$dotaz."*' IN BOOLEAN MODE) 
ORDER BY 5 * MATCH(`nick`) AGAINST ('".$dotaz."*' IN BOOLEAN MODE) DESC

ale nejsem si vubec jisty, jestli to funguje dobře, protože mi to občas vrací opravdu irelevatntní výsledky, a taky bych to potřeboval rozšířit ještě na jednu tabulku, aby to vyhazovalo výsledky z obou tabulek (ale zaroven aby se dalo poznat ze ktere tabulky ty data jsou)...

Je tohle srozumitelnější?
ninja
Profil
Nastudovat UNION. Pro rozliseni si pridate jeden sloupec do vysledku a pres IF do nej budete hazet nejaky priznak, o kterou tabulku se jedna.
Mastodont
Profil
Proč IF?
SELECT id, nick AS 'Jmeno', 'Uzivatel' As Typ FROM Uzivatele
UNION
SELECT id, nazev, 'Skupina' FROM Skupiny
ninja
Profil
Mastodont: mas pravdu, if je zbytecny.
Watchick
Profil
Takže prostě takhle:
SELECT id, nick AS 'Jmeno', 'Uzivatel' As Typ FROM uzivatele WHERE MATCH(`nick`,`uzivatel`) AGAINST ('".$dotaz."*' IN BOOLEAN MODE) 
UNION
SELECT id, nazev, 'Skupina' FROM Skupiny WHERE MATCH(`nazev`,`Skupina`) AGAINST ('".$dotaz."*' IN BOOLEAN MODE)  ORDER BY 5 * MATCH(////Co ma byt tady? /////) AGAINST ('".$dotaz."*' IN BOOLEAN MODE) DESC";
?
Je tohle vyhledávání efektivní?

Díky Watchick
AM_
Profil
zkus říct slovy, podle čeho se to má řadit, ten zápis pět krát match cosi mi přijde divný.
Watchick
Profil
Najít nejrelevantnější výsledky... a řadit prostě podle toho...
například pokud budu hledat "agor" tak aby to seřadilo nejprve "magor" a teprve potom "bagr"
Teda nevim jak je to s tim zacatecnim pismenem, asi to bere jen ty, ktere zacinaji na "agor" ne?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: