Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    aiuto query: join e group by

    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!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    ok dovrei esserci riuscito!

    ho fatto una cosa del genere; ho calcolato il livello in questo modo:
    Codice PHP:
    $lev=($_SESSION['livello']=="amministrazione")?"amministrazione', 'clienti":"clienti"

    e poi la query l'ho fatta così:
    codice:
    select bm.tag, count( bm.tag ) as tagcount from bookmarkTags bm inner join bookmarks b on bm.bookmarkID=b.id where b.livello in ('entrambi','{$lev}') group by ( bm.tag ) order by bm.tag asc




    facendo un po' di prove funziona
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.