Autor | Zpráva | ||
---|---|---|---|
libis Profil |
#1 · Zasláno: 1. 1. 2011, 19:58:18 · Upravil/a: libis
Zdravím, potřebuju poradit MYSQL dotaz. Mám 2 tabulky:
AKTUALITY (id,nadpis, autor, text) TAGY(id,aktualita,tag) potřebuji, aby se u aktuality, zobrazily podobné aktuality na základě jejich tagu. Kazdá aktualita ma nekolik tagu (1 - 5 tagů) - ty jsou v tabulce tagy, a kazdy tag je jako novy radek. Společný identifikátor je pak sloupec aktualita. Potrebuji sestavit mysql dotaz, který by nejprve nasel co nejvice pocet shodnych tagu s jinou aktualitou a dle shodnosti vypsal napriklad 5 aktualit ( to je v ramecku vedle clanku) a seradil je dle shodnosti s temi tagy. Případně se můžou tabulky upravit, nebo nějaký jiný nápad jak zobrazit podobné aktuality? Uvedu příklad: Mám aktualitu a u 3 tagy ( konference, Praha, film). A u té aktuality budu mít v kolonce podobné aktuality na základě shodnosti těch tagů, tedy aby to našlo aktualitu, u které budou ty tagy taky. Tedy pokud to najde aktualitu s - Praha, Film, konference - tak aby to dalo prednost pred aktualitou jen s Praha, konference. Zkrátka aby to našlo co nejrelevantnější články. Díky za každou reakci. Update: trochu jsem to lépe popsal. |
||
TomášK Profil |
#2 · Zasláno: 1. 1. 2011, 20:12:06 · Upravil/a: TomášK
Následující by mohlo fungovat, nezkoušel jsem:
SELECT * FROM aktuality JOIN ( SELECT aktualita FROM tagy GROUP BY aktualita ORDER BY COUNT(*) DESC LIMIT 5) Edit: odstraněna přebývající závorka |
||
libis Profil |
#3 · Zasláno: 1. 1. 2011, 23:13:46 · Upravil/a: libis
Hodilo to chybu (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in clanek.php on line 25)
zkusím to nějak upravit ... |
||
libis Profil |
#4 · Zasláno: 2. 1. 2011, 03:01:46
tak nakonec vyřešeno. díky
|
||
Časová prodleva: 13 let
|
0