con un bel po' di input da parte di Faber ( realizzatore di smarking.com ), che ringrazio ancora moltissimo ,sto realizzando anche io un piccolo bookmark che servirà nella intranet della ditta in cui lavoro, e ho un problema nell'estrazione dei tag relativi...
ho questa tabella di tag:
codice:
INSERT INTO `bookmarkTags` (`userID`, `bookmarkID`, `tag`) VALUES
(1, 1, 'manuale'),
(1, 1, 'on line'),
(1, 1, 'php'),
(1, 2, 'manuale'),
(1, 2, 'manuali');
dove, i primi 3 record sono relativi al bookmark 1 e gli ultimi 2, ovviamente, al bookmark 2
come si può ben vedere il campo userID è chiave esterna relativa alla tabella degli utenti, mentre il campo bookmarkID è chiave esterna verso la tabella dei bookmark.
La query che uso per estrarre i tag (relativi o meno) è questa:
Codice PHP:
$sql="select b.tag, count(b.userID) as tagCount from bookmarkTags a, bookmarkTags b where a.userID=b.userID and a.bookmarkID=b.bookmarkID and a.tag in ($tag) and b.tag not in ($tag) group by b.tag order by tagCount desc, b.tag";
dove $tag è una stringa che può contenere: 'php' oppure 'php','manuale' etc etc
il problema inizia a presentarsi nel momento in cui seleziono due o più tag.
Perché se $tag vale solamente php il funzionamento è corretto, mi estrae i tag relativi: manuale e on line
se a questo punto seleziono anche manuale ( e $tag diventa quindi 'php','manuale' ) il risultato di quella query mi diventa on line e manuali...
non capisco perché mi estrae anche manuali...che prima non c'era. E a rigor di logica non dovrebbe estrarmelo in quanto manuali è in relazione SOLO con manuale, NON anche con php...
L'unico tag correlato SIA a php SIA a manuale dovrebbe essere on line.
Qualcuno mi aiuta a capire dove sto sbagliando?
Grazie infinite!