Consideriamo le tabelle
INTEGRATORI(Codice, Nome, PrincipioA<vo, Produ?ore, Prezzo) PRODUTTORI(CodiceProduttore, Nome, Nazione) PRINCIPIOATTIVO(Id, Nome, Categoria)
Scrivere i comandi SQL per:
Eliminare gli integratori del produttore di nome OSATO
DELETE FROM Integratori WHERE codice IN (
SELECT Integratori.codice
FROM Integratori JOIN Produttori ON codice = codiceProduttore
WHERE Produttori.nome = 'OSATO'
)
Diminuire del 10% il prezzo degli integratori del produttore di nome OSATO e che contengono il principio attivo X765
UPDATE TABLE Integratori
WHERE Integratori.codice IN(
SELECT Integratori.codice
FROM (Integratori JOIN Produttori ON codice = codiceProduttore)
JOIN PrincipioAttivo ON principioattivo = id
WHERE Produttori.nome = 'OSATO' AND principioAttivo.nome = 'X765'
)
SET prezzo = prezzo * 0.9;
Si consideri il seguente schema di basi di dati:
Persone(CF, Cognome, Nome, Età) Immobili(Codice, Via, NumeroCivico, Città, Valore) Proprietà(Persona, Immobile, Percentuale)
Definire query SQL per:
Diminuire del 10% il valore degli immobili posseduti da Paolo Rossi
UPDATE immobili SET valore = valore * 0.9
WHERE codice IN (
SELECT codice FROM (immobili JOIN proprieta ON codice = immobile) JOIN persone ON persona = cf
WHERE nome = 'Paolo' AND cognome = 'Rossi'
)
Aggiornare il db in seguito alla vendita delle proprietà di Paolo Rossi a Catania a favore di Neri Sara
UPDATE proprieta SET persona = (
SELECT DISTINCT cf FROM persone JOIN proprieta ON cf = persona
WHERE nome = 'Sara' AND cognome = 'Neri'
)WHERE (persona, immobile) IN (
SELECT cf, codice FROM
(immobili JOIN proprieta ON codice = immobile) JOIN persone ON persona = cf
WHERE nome = 'Paolo' AND cognome = 'Rossi' AND città = 'Catania'
)
Rimuovere le proprietà di immobili ubicati a Roma di Giovanni Verdi
DELETE FROM proprieta
WHERE immobile IN(
SELECT DISTINCT codice FROM
(immobili JOIN proprieta ON codice = immobile) JOIN persone ON persona = cf
WHERE città = 'Roma' AND nome = 'Giovanni' AND cognome = 'Verdi'
)
Mostrare le città in ciu non ci sono immobili di valore inferiore a 50000 euro
SELECT DISTINCT città FROM immobili WHERE città NOT IN(
SELECT città FROM immobili WHERE valore < 50000
)
Mostrare l’età delle persone che non posseggono immobili al 50%
SELECT DISTINCT cf, età FROM persone
WHERE cf NOT IN(
SELECT cf FROM
(persone JOIN proprieta ON cf = persona)
WHERE percentuale = 50
)
Mostrare il codice fiscale della persona che possiede il maggor numero di immobili
select Persona p, count(*) as num
from proprieta
group by Persona
having count(*) >= all(
select count(*)
from proprieta
group by Persona
)