Clienti := < id, nome, cognome, indirizzo,città >
Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità>
Prodotti := < id, nome, descrizione, costo_unitario,scorte>
1) SELECT nome FROM prodotti WHERE scorte < 100
2) SELECT id_prodotto, SUM(quantità) from ordini WHERE YEAR(data_ora_ordine) = YEAR(CURDATE()) GROUP BY id_prodotto
o
SELECT prodotti.nome, SUM(quantità) from ordini,prodotti WHERE (prodotti.id = ordini.id_prodotto) AND (YEAR(data_ora_ordine) = YEAR(CURDATE())) GROUP BY prodotti.nome
3) SELECT * from clienti WHERE (indirizzo LIKE '%Via%Cavour%') and (città = 'Roma');
4) UPDATE prodotti SET scorte = 200 where nome='Dixan'
5) SELECT città, COUNT(*) as num_ordini FROM clienti,ordini WHERE (ordini.id_cliente = clienti.id) GROUP BY città
6) Numero di ordini per cliente A: CREATE TABLE ord_cli( SELECT id_cliente,COUNT(*) as num_ordini FROM ordini GROUP BY id_cliente);
Media degli ordini per cliente B: SELECT AVG(num_ordini) FROM ord_cli
Query finale: SELECT clienti.* FROM clienti,ord_cli WHERE (clienti.id = ord_cli.id_cliente) AND num_ordini > B
7) SELECT SUM(ordini.quantità * prodotti.costo_unitario) as Vendite_Dixan FROM prodotti, ordini WHERE (prodotti.nome='Dixan') AND (prodotti.id = ordini.id_prodotto)
8) SELECT prodotti.nome,SUM(ordini.quantità) as num_unità FROM prodotti,ordini WHERE (prodotti.id = ordini.id_prodotto) AND (ordini.data_ora_ordine> NOW() - INTERVAL 7 DAY) GROUP BY prodotti.nome ORDER BY num_unità DESC LIMIT 10
9) A: SELECT id FROM ordini ORDER BY data_ora_ordine DESC LIMIT 1 B: DELETE FROM ordini WHERE id = A
in finale abbiamo:
DELETE FROM ordini WHERE id =(SELECT id FROM ordini ORDER BY data_ora_ordine DESC LIMIT 1 )
oppure in maniera analoga:
DELETE FROM ordini WHERE data_ora_ordine = ( SELECT MAX(data_ora_ordine) FROM ordini );