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

    [SQL] SUM Tra due tabelle

    Salve.

    Vorrei sommare le lezioni divise per città dell'anno 2012, settimana 1

    Es:
    citta anno week n_lezioni
    Verona 2012 1 45
    Firenze 2012 1 24


    Come potrei impostare la mia SELECT?

    Ecco il Dump
    codice:
    -- Struttura della tabella `lezioni`
    --
    
    CREATE TABLE `lezioni` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `week` int(2) NOT NULL,
      `anno` int(4) NOT NULL,
      `lez` int(3) NOT NULL,
      `id_ins` int(10) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `id_ins` (`id_ins`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=280 ;
    
    --
    -- Dump dei dati per la tabella `lezioni`
    --
    
    INSERT INTO `lezioni` (`id`, `week`, `anno`, `lez`, `id_ins`) VALUES
    (186, 1, 2012, 33, 73),
    (187, 1, 2012, 12, 74),
    (188, 1, 2012, 12, 75),
    (189, 1, 2012, 12, 76),
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `maestri`
    --
    
    CREATE TABLE `maestri` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `citta` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
      `nome` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `cognome` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `sesso` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'uomo',
      UNIQUE KEY `id` (`id`),
      KEY `id_scuola` (`citta`),
      KEY `sesso` (`sesso`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=100 ;
    
    --
    -- Dump dei dati per la tabella `maestri`
    
    INSERT INTO `maestri` (`id`, `citta`, `nome`, `cognome`, `sesso`) VALUES
    (73, 'Verona', 'Roberto', 'Bianchi', 'uomo'),
    (74, 'Firenze', 'Mario', 'Rossi', 'uomo'),
    (75, 'Verona', 'Maria', 'Verdi', 'uomo'),
    (76, 'Firenze', 'Marco', 'Marchi', 'uomo'),
    --

  2. #2
    metti in JOIN le due tabelle e poi chiedi la COUNT()/GROUP BY città

  3. #3
    COUNT() non lo conosco.

    Ho provato a buttare giù questo ma non gira:

    codice:
    SELECT maestri.*, SUM(lezioni.lez) AS n_lezioni FROM maestri INNER JOIN lezioni ON maestri.citta WHERE lezioni.anno = '2012' AND lezioni.week = '1' GROUP BY maestri.citta ORDER BY n_lezioni DESC

  4. #4
    Così al volo, noto che le tabelle non hanno un alias nella tua query.

    SELECT <alias>.nome_campo, ...
    FROM lezioni [AS] <alias> JOIN maestri [AS] <alias>

  5. #5
    Originariamente inviato da amivan85
    COUNT() non lo conosco.

    Ho provato a buttare giù questo ma non gira:

    codice:
    SELECT maestri.*, SUM(lezioni.lez) AS n_lezioni FROM maestri INNER JOIN lezioni ON maestri.citta WHERE lezioni.anno = '2012' AND lezioni.week = '1' GROUP BY maestri.citta ORDER BY n_lezioni DESC
    che vuol dire "non gira"?

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.