Salve,
ho riscontrato un problema con mysql e non ne capisco il motivo. Il problema è sulla 5a richiesta del punto 3.
TRACCIA:
Io ho proceduto creando un view con i nomi dei prodotti venduti a febbraio e il totale delle relative vendite.
create view v1 as select prodotto,sum(quantita) as TOT from vendita where month(data)=2 group by prodotto;
Poi ho fatto un join della view e della tabella prodotto, selezionando solo il nome del prodotto e usando come discriminante che la quantità doveva essere quella massima.
select prodotto.nome as PRODOTTO_PIU_VENDUTO from prodotto inner join v1 on v1.prodotto=prodotto.id_prodotto having v1.TOT=max(v1.TOT);
Ma mi dà l'errore "Unknown column 'v1.TOT'' in 'having clause'".
La cosa che non capisco però è perchè se aggiungo alla select v1.TOT tutto funziona perfettamente.
select prodotto.nome as PRODOTTO_PIU_VENDUTO, v1.tot as TOTALE from prodotto inner join v1 on v1.prodotto=prodotto.id_prodotto having v1.TOT=max(v1.TOT);
In parole semplici non capisco perchè v1.TOT non viene riconosciuta come colonna se non viene inserita nel select, mentre normalmente posso utilizzare le colonne non presenti nel select come discriminanti.
Grazie a chi mi aiuterà.
PS: allego il testo del .sql per chi volesse avere sottomano i vari database.
#CREAZIONE DATABASE
create database negozi;
#SELEZIONE DATABASE
use negozi;
#CREAZIONE TABELLA PRODOTTO
create table prodotto(
id_prodotto int auto_increment primary key,
nome varchar(20) not null,
categoria varchar(20) not null,
prezzo decimal(8,2) not null);
#CREAZIONE TABELLA NEGOZIO
create table negozio(
id_negozio int auto_increment primary key,
nome varchar(20) not null);
#CREAZIONE TABELLA VENDITA
create table vendita(
prodotto int,
negozio int,
data date,
quantita int,
primary key (prodotto,negozio,data),
constraint fk_pro
foreign key(prodotto)
references prodotto(id_prodotto),
constraint fk_neg
foreign key(negozio)
references negozio(id_negozio));
#INSERIMENTO DATI PRODOTTO
insert into prodotto(nome,categoria,prezzo) values
('Maglione','Abbigliamento',22.44),
('Scarpe','Abbigliamento',50.40),
('Cinta','Abbigliamento',10.44),
('Decoder','Elettronica',100.00),
('Stampante','Elettronica',80.50),
('Monitor','Elettronica',200.10);
#INSERIMENTO DATI NEGOZIO
insert into negozio(nome) values
('Gigastore'),
('Fitness Boutique');
#INSERIMENTO DATI VENDITA
insert into vendita values
(1,1,'2008-1-1',1),
(1,2,'2008-1-1',2),
(2,1,'2008-1-1',5),
(2,2,'2008-2-5',1),
(2,2,'2008-2-4',10),
(3,1,'2008-2-6',5),
(3,2,'2008-3-6',1),
(3,1,'2008-4-10',10),
(4,2,'2008-10-4',20),
(4,2,'2008-11-10',50),
(4,2,'2008-12-11',1);