Pogledajte određenu poruku
Staro 14. 04. 2007.   #3
Petar Marić
Python Ambassador
Master
 
Avatar Petar Marić
 
Datum učlanjenja: 06.06.2005
Lokacija: Novi Sad
Poruke: 602
Hvala: 28
27 "Hvala" u 17 poruka
Petar Marić će postati "faca" uskoro
Pošaljite ICQ poruku za Petar Marić
Default

Dobio sam ideju kako bi se moglo napisati nešto slično što je zamislio nK a bez upotrebe pod-upita:
Kôd:
# DDL
CREATE TABLE `entry_tags` (
  `entry_id` int(11) NOT NULL,
  `tag_id` int(11) NOT NULL,
  PRIMARY KEY  (`entry_id`,`tag_id`)
);
Kôd:
# Upit
SELECT b.entry_id, COUNT(*) as score FROM entry_tags a
JOIN entry_tags b ON
  a.tag_id = b.tag_id AND
  a.entry_id = 1  # entry_id za koji trazimo slicne unose
GROUP BY b.entry_id
HAVING b.entry_id != 1 # entry_id za koji trazimo slicne unose
ORDER BY COUNT(*) DESC;
Velika mana ovog rešenja je to što u obzir uzima samo presek skupova ali ne i njihovu razliku.
Bolje rešenje bi bilo tipa +2 "glasa" za svaki tag koji se nalazi u oba unosa (referentni i onaj koji se trenutno poredi s njim) i -1 "glas" za svaki tag koji se ne nalazi u nekom od ta 2 unosa - i na kraju se rezultati sortiraju po sumi.
__________________
Python Ambassador of Serbia
Petar Marić je offline   Odgovorite uz citat