Salve,
ho ancora problemi a formulare query:
ho due tabelle:
manager e aziende
manag ha manag.id e aziendaid (di collegamento)
e azi ha azi.id e azi.settori
dunque, se faccio
tutto ok, escono i settori con accanto il contatorecodice:select distinct settori, count(*) as c from azi where ( settori !='' ) group by settori order by c desc;
ma se voglio contare i manager raggruppandoli per categoria, quando formulo la query escono fuori comunque il numero delle aziende!
Ho provato sia con:
e sia invertendo l'inner join e il from, ma il risultato è indifferente.codice:select distinct settori, count(*) as c from manag inner join azi ON ( manag.id_azienda = azi.ID ) where ( settori !='' ) group by settori order by c desc
L'unica soluzione funzionante che mi è venuta in mente è quella di usare una tabella temporanea per appoggiare i dati e poi contarli, ma mi chiedevo se si potesse fare tutto con una query
Per farvi capire meglio come sono fatte le tabelle ecco l'sql che le crea:
codice:CREATE TABLE `azi` ( `id` INTEGER(11) UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(255) NOT NULL, `settori` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ); COMMIT; INSERT INTO `azi` (`id`, `nome`, `settore`) VALUES (1,'società1','1'), (2,'società2','1'), (3,'società3','2'), (4,'società4','3'), (5,'società5','4'), (6,'società6','4'), (7,'società7','4'), (8,'società8','2'); CREATE TABLE `manag` ( `id` INTEGER(11) UNSIGNED NOT NULL AUTO_INCREMENT, `id_azienda` INTEGER(11) NOT NULL DEFAULT '0', `nome` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ); COMMIT; INSERT INTO `manag` (`id`, `id_azienda`, `nome`) VALUES (1,1,'tizio'), (2,1,'caio'), (3,1,'sempronio'), (4,2,'asdrubale'), (5,2,'fagiano'), (6,3,'elagabalo'), (7,3,'io'), (8,4,'tu'), (9,4,'lui'), (10,5,'noi'), (11,6,'voi'), (12,7,'essi'), (13,7,'loro'), (14,8,'boh');