  |   | 
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro... 
In questa sezione è indicizzato in textonly il contenuto del nostro forum |  
 
  
Query laboratorio Clicca QUI per vedere il messaggio nel forum | 
 
| fradj | 
 
| Ciao a tutti... qualcuno ha le query fatte a lezione lunedi??? io purtroppo ho perso il quaderno. grazie mille... | 
 
 
 
| AL | 
 
questi son quelli che ho io: 
 
/* 1) Trovare i nomi delle pizze e i prezzi che costano meno di 6 euro */ 
SELECT nome, prezzo FROM pizza WHERE prezzo < 6 
 
/* 2) Trovare gli ingredienti delle pizze */ 
SELECT DISTINCT ingrediente FROM ingrediente 
 
/* 3) Trovare cognome, nome e telefono dei clienti che abitano in via dei Girasoli ordinati per nome e cognome */ 
SELECT cognomec, nomec, telc FROM cliente WHERE via = 'via dei Girasoli' ORDER BY cognomec, nomec 
 
/* 4) Trovare il numero di telefono dei clienti che hanno effettuato un ordine 
di almeno 5 pizze nell'ultima settimana, spendendo tra i 20 e i 50 euro*/ 
SELECT telc FROM ordine 
WHERE qta <= 5 AND 
importo BETWEEN 20 AND 50 AND 
data > (CURRENT_DATE - 7) 
 
/* 5) Trovare il nome delle pizze ordinate in data 4 settembre 2009 */ 
SELECT nome FROM pizza 
NATURAL JOIN ordine 
WHERE data = '2009-09-04' 
 
/* 6) Trovare i nominativi dei clienti che hanno ordinato almeno una pizza che contenga le olive di ogni genere, 
 insieme alla data e all'importo dell'ordine. Presentare il risultato ordinato in modo decrescente rispetto all'importo e, 
 a parità di importo, in modo crescente per cognome e nome */ 
SELECT DISTINCT cognomec, nomec, data, importo FROM cliente 
NATURAL JOIN ordine 
NATURAL JOIN ingrediente 
WHERE ingrediente LIKE '%olive%' 
ORDER BY importo DESC, cognomec, nomec 
 
/* 7) Trovare i clienti vicini di casa. Due clienti si dicono "vicini di casa" se abitano 
 nella stessa via e la differenza dei loro numeri civici è minore di 5*/ 
SELECT c1.*, c2.* FROM 
cliente AS c1, cliente AS c2 
WHERE c1.via = c2.via AND c1.telc < c2.telc AND 
ABS(c1.nciv - c2.nciv) < 5 
 
/* 8) Restituire i dati degli ordini per i quali si è applicato uno sconto(cioè gli ordini per cui l'importo è inferiore 
 al valore ottenuto moltiplicando la quantità ordinata per il relativo prezzo della pizza). Riportare anche lo sconto effettuato. */ 
SELECT ordine.*, (qta*prezzo)-importo AS sconto FROM pizza 
NATURAL JOIN ordine 
WHERE importo < qta*prezzo 
 
/* 9) Produrre l'elenco, in ordine alfabetico, dei clienti. Per quelli che hanno effettuato almeno un ordine, riportare nell'elenco 
le informazioni relative all'importo e alla data degli ordini effettuati. Gli ordini dello stesso cliente devono essere ordinati 
dalla data più recente. */ 
SELECT cognomec, nomec, importo, data FROM cliente 
NATURAL LEFT JOIN ordine 
ORDER BY cognomec, nomec, data DESC 
 
/* 10)Trovare il numero totale, l'importo totale e medio degli ordini degli utenti e quante pizze diverse hanno ordinato. */ 
SELECT count (*), SUM (importo), AVG (importo), count(distinct codp) 
FROM ordine 
 
/* 10bis)Trovare per ogni cliente, il numero totale,l'importo totale e medio dei suoi ordini e quante pizze diverse ha ordinato.*/ 
SELECT count (*), SUM (importo), AVG (importo), count(distinct codp) 
FROM ordine 
GROUP BY telc 
 
/* 11) Trovare il nome delle pizze ordinate nel 2010 il cui importo totale ordinato sia stato inferiore alla somma del prezzo per la quantità ordinata.*/ 
SELECT nome, prezzo, sum(qta), sum (importo) FROM pizza 
NATURAL JOIN ordine 
WHERE data BETWEEN '2010-1-1' AND '2010-12-31' 
GROUP BY nome, prezzo 
HAVING sum(importo)<sum(prezzo*qta) 
 
/* 12) Trovare il codice delle pizze con almeno 3 ingredienti. Restituire anche il numero di ingredienti.*/ 
SELECT codp, count(ingrediente) FROM ingrediente 
GROUP BY codp 
HAVING count(ingrediente) >= 3 
 
/* 12bis) Trovare il codice delle pizze con il maggior numero di ingredienti. Restituire anche il numero di ingredienti.*/ 
SELECT DISTINCT codp, count(ingrediente) 
FROM ingrediente 
GROUP BY codp 
HAVING count(ingrediente) >= ALL( 
SELECT count(ingrediente) from ingrediente GROUP BY codp) 
 
/* 13) Restituire in una singola colonna, cognome e nome dei clienti che hanno ordinato il minor numero di pizze margherita, 
ordinando il risultato in base al cognome.*/ 
 
SELECT cognomec || ' ' || nomec FROM cliente 
NATURAL JOIN ordine 
NATURAL JOIN pizza 
WHERE nome='margherita' 
GROUP BY cognomec, nomec 
HAVING sum(qta) <= ALL (  
 
SELECT sum(qta) FROM cliente 
NATURAL JOIN ordine 
NATURAL JOIN pizza 
WHERE nome='margherita' 
GROUP BY cognomec, nomec 
 
) 
 
/* 14) Trovare i clienti che hanno ordinato (almeno una volta) la pizza capricciosa oppure ai quattro formaggi.*/ 
SELECT DISTINCT cognomec, nomec FROM cliente 
NATURAL JOIN ordine 
NATURAL JOIN pizza 
WHERE nome='capricciosa' OR nome='quattro formaggi' | 
 
 
 
| fradj | 
 
| thank you very much... | 
 
 
 
 
| yaone | 
 
| queste sono quelle ke abbiamo fatto anke ieri (labA) vero? | 
 
 
 
| AL | 
 
Originally posted by yaone  
queste sono quelle ke abbiamo fatto ieri (labA)    
 
son tutte quelle che abbiamo fatto fin ora lunedì 3 e mercoledì 5 esclusa la numero 15 in cui mi sembra venga utilizzato INTERSECT | 
 
 
 
| AL | 
 
| ho editato la richiesta della query 11 perché mancava un pezzo | 
 
 
 
 | 
 
 
 | 
 
 
 | 
 
 
 |