Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [mysql] count(*) con inner join che non funziona come dovrebbe

    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
    codice:
    select distinct settori, count(*) as c from azi where ( settori !='' ) group by settori order by c desc;
    tutto ok, escono i settori con accanto il contatore

    ma se voglio contare i manager raggruppandoli per categoria, quando formulo la query escono fuori comunque il numero delle aziende!
    Ho provato sia con:
    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
    e sia invertendo l'inner join e il from, ma il risultato è indifferente.

    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');
    わさび

  2. #2
    Manca la specificazione della tabella per la funzione COUNT

    select distinct settori, count(azi.*) as c
    from manag
    inner join azi ON ( manag.id_azienda = azi.ID ) where ( settori !='' )
    group by settori
    order by c desc
    Poi non capisco a cosa ti serva il DISTINCT se usi il GROUP BY

    :master:
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da ghiaccio84
    Manca la specificazione della tabella per la funzione COUNT



    Poi non capisco a cosa ti serva il DISTINCT se usi il GROUP BY

    :master:
    giusto, il distinct non serve a nulla, ma come specifico la tabella per il count?
    わさび

  4. #4
    count (azi.*)
    per ricevere il numero di record di man collegati al record dell'azienda
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  5. #5
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da ghiaccio84
    count (azi.*)
    per ricevere il numero di record di man collegati al record dell'azienda
    scusa ma non capisco,
    devo recuperare il numero dei manager per categoria
    codice:
    select azi.settori, count( azi.* ) as c
    from manag
    inner join azi ON ( manag.id_azienda = azi.ID ) where ( settori !='' )
    group by settori
    order by c desc
    così mi da You have an error in your SQL syntax
    わさび

  6. #6
    ah scusa ha sbagliato, volevo dire count(manag.id)
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  7. #7
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da ghiaccio84
    ah scusa ha sbagliato, volevo dire count(manag.id)
    ok capito
    わさび

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.