Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    MySQL, Operatori Aggregati COUNT, SUM, MIN, MAX, AVG, ecc. non funzionano

    Ciao a tutti.
    Stavo studiando gli operatori aggregati di MySQL, quali COUNT, SUM, MAX, MIN, AVG, ecc. ma ho riscontrato dei problemi.
    Mi esce sempre un errore. Ho fatto un casino di prove ma non capisco se e dove sbaglio.
    Sto seguendo il libro Basi di dati Modelli e linguaggi di interrogazione terza edizione, della McGraw-Hill.

    Ad ora gli esempi hanno funzionato tutti, tranne questo e non capisco il perchè.
    Dice errore 1064.
    Vi allego uno screen.

    Mi potete dare una mano a capire dov'è l'errore?
    Ringrazio anticipatamente tutti.
    ErroreMySql.jpg

  2. #2
    1064 e' un errore di sintassi, scrivi quali query hai eseguito (lo screenshot e' troppo piccolo, non si vede niente).

    Intanto sposto in database, visto che la domanda con PHP non c'entra nulla (magari leggere il regolamento prima di postare non sarebbe una brutta cosa).

  3. #3
    Dopo tanti sforzi e dopo avervi scritto sono riuscito a risolvere l'errore che sul libro non viene citato.
    Gli operatori aggregati vanno sempre "ridenominati" con as.

    Lo scrivo per avere una conferma di voi e per aiutare altri utenti che sono incappati nel mio stesso problema

  4. #4
    Quote Originariamente inviata da k.b Visualizza il messaggio
    1064 e' un errore di sintassi, scrivi quali query hai eseguito (lo screenshot e' troppo piccolo, non si vede niente).

    Intanto sposto in database, visto che la domanda con PHP non c'entra nulla (magari leggere il regolamento prima di postare non sarebbe una brutta cosa).
    Scusa il disagio. Pensavo fosse inerente.
    Il forum non mi fa caricare immagini più grandi di 100kb.

    Cmq scrivo qui la sintassi.

    select count (*)
    from Impiegato
    where Dipart = 'Produzione'

  5. #5
    Aggiorno.
    Non ho risolto per tutto, ma solo una parte.
    Se scrivo:

    SELECT COUNT (*)
    FROM Impiegato
    WHERE Dipart = 'Produzione'

    Esce errore #1064

  6. #6
    L'errore che ho commesso è il seguente:
    tra l'operatore aggregato e la parentesi non ci devono essere spazi vuoti.

  7. #7

    Interrogazioni tipo insiemistico e Interrogazioni nidificate

    Ciao a tutti, ho nuovamente problemi ma questa volta con le interrogazioni di tipo insiemistico e interrogazioni nidificate.

    PhpMyAdmin mi restituisce errori.
    Vi scrivo le query e gli script che mi danno errori.

    1) UNION ALL:
    Codice PHP:
    SELECT Nome
    FROM Impiegato
    WHERE Dipart 
    <> 'Amministrazione'
    UNION all
    SELECT Cognome
    FROM Impiegato
    WHERE Dipart 
    <> 'Amministrazione' 
    Errore riportato: all viene segnato in rosso e il risultato dell'interrogazione non è corretto in quanto spuntano solo i nomi e non i cognomi.

    2)INTERSECT
    Codice PHP:
    SELECT Nome
    FROM Impiegato
    intersect
    SELECT Cognome
    FROM Impiegato 
    Errore riportato: intersect viene evidenziato in rosso e mi vengono fuori tutti i nomi degli impiegati.

    3)EXCEPT
    Codice PHP:
    SELECT Nome
    FROM Impiegato
    except
    SELECT Cognome
    FROM Impiegato 
    Errore riportato: risultato uguale ad intersect.

    4)ALL in interrogazioni nidificate:
    Codice PHP:
    SELECT NomeDipartimento
    FROM Dipartimento
    WHERE NomeDipartimento 
    <>all (SELECT Dipart
                      FROM Impiegato
                      WHERE Cognome 
    'Rossi'
    Errore riportato: #1064




    Tabella e dati IMPIEGATO:
    Codice PHP:
    CREATE TABLE `Impiegato` (
      `
    Nomevarchar(20NOT NULL,
      `
    Cognomevarchar(20NOT NULL,
      `
    Dipartvarchar(20NOT NULL,
      `
    Ufficiosmallint(6) DEFAULT '0',
      `
    Stipendiosmallint(6) DEFAULT '0'
    ENGINE=InnoDB DEFAULT CHARSET=latin1;

    --
    -- 
    Dump dei dati per la tabella `Impiegato`
    --

    INSERT INTO `Impiegato` (`Nome`, `Cognome`, `Dipart`, `Ufficio`, `Stipendio`) VALUES
    ('Carlo''Bianchi''Produzione'2036),
    (
    'Carlo''Rossi''Direzione'1480),
    (
    'Franco''Neri''Distribuzione'1645),
    (
    'Giovanni''Verdi''Amministrazione'2040),
    (
    'Lorenzo''Gialli''Direzione'773),
    (
    'Marco''Franco''Produzione'2046),
    (
    'Mario''Rossi''Amministrazione'1045),
    (
    'Paola''Rosati''Amministrazione'7540); 
    Tabella e dati DIPARTIMENTO:
    Codice PHP:
    CREATE TABLE `Dipartimento` (
      `
    NomeDipartimentovarchar(30NOT NULL,
      `
    Edificioint(11NOT NULL,
      `
    AuleTotint(11) DEFAULT '0',
      `
    Pianismallint(6) DEFAULT '0'
    ENGINE=InnoDB DEFAULT CHARSET=latin1;

    --
    -- 
    Dump dei dati per la tabella `Dipartimento`
    --

    INSERT INTO `Dipartimento` (`NomeDipartimento`, `Edificio`, `AuleTot`, `Piani`) VALUES
    ('Amministrazione'000),
    (
    'Architett.'711NULL),
    (
    'Architettura'261),
    (
    'Beni Culturali'16202),
    (
    'Chimica'2291),
    (
    'Direzione'000),
    (
    'Distribuzione'000),
    (
    'Economia'916NULL),
    (
    'Giurisprudenza'23402),
    (
    'Ingegneria'85NULL),
    (
    'Lingue'214NULL),
    (
    'Medicina'47NULL),
    (
    'Produzione'000),
    (
    'Sc.Educaz.'1520NULL),
    (
    'Scienze Educazione'15152); 

    Grazie a tutti per l'aiuto.
    Ultima modifica di vegetablu; 29-04-2016 a 13:10

  8. #8
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,254
    Per le prime 3
    codice:
    SELECT Nome as A
    FROM Impiegato
    WHERE Dipart <> 'Amministrazione'
    UNION all
    SELECT Cognome as A
    FROM Impiegato
    WHERE Dipart <> 'Amministrazione'
    Per la 4 prova a mettere uno spazio tra ALL e <>
    codice:
    SELECT NomeDipartimento
    FROM Dipartimento
    WHERE NomeDipartimento <> all (SELECT Dipart
                      FROM Impiegato
                      WHERE Cognome = 'Rossi')  
    

  9. #9
    Quote Originariamente inviata da URANIO Visualizza il messaggio
    Per le prime 3
    codice:
    SELECT Nome as A
    FROM Impiegato
    WHERE Dipart <> 'Amministrazione'
    UNION all
    SELECT Cognome as A
    FROM Impiegato
    WHERE Dipart <> 'Amministrazione'
    Stesso identico risultato, ovvero mancano i cognomi degli impiegati.
    1.jpg

    Per la 4 prova a mettere uno spazio tra ALL e <>
    codice:
    SELECT NomeDipartimento
    FROM Dipartimento
    WHERE NomeDipartimento <> all (SELECT Dipart
                      FROM Impiegato
                      WHERE Cognome = 'Rossi')  
    
    Stesso errore di prima.
    2.jpg

    Ti allego gli screen così potrai capire meglio cosa mi spunta.
    Grazie mille.

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Per la 4
    codice:
    SELECT NomeDipartimento
    FROM Dipartimento
    WHERE NomeDipartimento NOT IN (SELECT Dipart
                      FROM Impiegato
                      WHERE Cognome = 'Rossi')  
    
    Ultima modifica di badaze; 29-04-2016 a 22:25
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.