ho questa query per un servizio di social bookmarking che sto costruendo:
select tag, count( tag ) as tagcount from bookmarkTags group by ( tag ) order by tag asc
praticamente vado ad estrarre tutti i tag con relativo conteggio di quante volte compare un tag. Questo va benone, ma oggi mi hanno dato una modifica da fare ( bello quando le modifiche avvengono a progetto in corso ). Praticamente mi hanno detto che l'accesso dovrà prevedere due livelli di utenti ( amministratori e clienti ) gli amministratori chiramente potranno vedere tutti i bookmark e quindi la query sopra va ancora bene. Mentre i clienti potranno vedere SOLO i bookmark postati da altri clienti. Quindi devo modificare la query sopra, ma non so da che parte cominciare.
Il livello di ogni utente l'ho aggiunto anche nella tabella dei bookmark, la cui struttura è questa:
codice:
CREATE TABLE `bookmarks` (
`id` int(10) unsigned NOT NULL auto_increment,
`url` varchar(255) default NULL,
`titolo` varchar(255) default NULL,
`descrizione` varchar(255) default NULL,
`modificato` char(1) NOT NULL default 'N',
`livello` varchar(25) NOT NULL default 'entrambi',
PRIMARY KEY (`id`)
)
mentre la tabella dei tag è questa:
codice:
CREATE TABLE `bookmarkTags` (
`userID` int(10) unsigned NOT NULL default '0',
`bookmarkID` int(10) unsigned NOT NULL default '0',
`tag` varchar(255) NOT NULL default '',
PRIMARY KEY (`userID`,`bookmarkID`,`tag`)
)
praticamente la query sopra dovrebbe diventare una join fra queste due tabelle e mostrarmi solo i tag "di competenza" a quel livello di utenza. Livello che salvo in una variabile di sessione.
Ma come faccio a fare una join fra le due tabelle in modo che non mi sballi il conteggio?
spero di essermi spiegato. Sono davvero in alto mare.
grazie a chi mi saprà aiutare!