ESEMPI DI QUERY SQL date le presenti strutture di tabelle Ivan Bongiorni MATERIALI +--------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------+------+-----+---------+-------+ | cod_progetto | int(11) | | MUL | 0 | | | desc_mat | varchar(50) | | | | | | prezzo | decimal(10,0) | | | 0 | | +--------------+---------------+------+-----+---------+-------+ PROGETTI +-------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------------+------+-----+---------+-------+ | codice_imp | int(11) | | MUL | 0 | | | n_progetto | int(11) | | PRI | 0 | | | descrizione | varchar(35) | | | | | | costo | decimal(10,0) | | | 0 | | +-------------+---------------+------+-----+---------+-------+ IMPIEGATI +--------------+-------------+------+-----+------------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+------------+-------+ | codice | int(11) | | PRI | 0 | | | nome | varchar(30) | | | | | | cognome | varchar(30) | | | | | | data_nascita | date | | | 0000-00-00 | | | residenza | varchar(35) | | | | | | provincia | char(2) | YES | | NULL | | +--------------+-------------+------+-----+------------+------- >inner join tra tabella impiegati e tabella progetti con chiave su codice impiegato vengono uniti i campi impiegati.codice e progetti.codice_imp ------------- SELECT impiegati.nome,progetti.descrizione FROM impiegati INNER JOIN progetti ON impiegati.codice=progetti.codice_imp; >conta il numero di progetti fatti da ogni impiegato vengono uniti i campi impiegati.codice e progetti.codice_imp --------- SELECT impiegati.nome, COUNT(progetti.descrizione) FROM impiegati INNER JOIN progetti ON impiegati.codice=progetti.codice_imp GRouP BY nome; >conta il numero di progetti fatti da un impiegato (dati in input codice impiegato, qui viene posto = 1) vengono uniti i campi impiegati.codice e progetti.codice_imp -------- SELECT impiegati.nome, COUNT(progetti.descrizione) FROM impiegati INNER JOIN progetti ON impiegati.codice=progetti.codice_imp WHERE progetti.codice_imp=1 GROUP BY nome; >incremento del campo costo della tabella progetti del 10%, in pratica: come aumentare il costo di ogni progetto del 10% -------- UPDATE progetti SET costo = costo+((costo*10)/100); >dato un materiale, stampa tutti gli impiegati che lo usano in modo non ripetuto (c'e' il DISTINCT). NB: nella tabella materiali ci sono due record 'interruttore' (questa รจ rindondanza!!!) togliendo il distinct viene fuori LUCA due volte. ----------- SELECT DISTINCT impiegati.nome FROM impiegati INNER JOIN progetti ON impiegati.codice = progetti.codice_imp INNER JOIN materiali ON progetti.n_progetto = materiali.cod_progetto WHERE desc_mat = "interruttore"; >Inserimento un nuovo record ------------- INSERT INTO impiegati (codice, nome, cognome, data_nascita, residenza, provincia) VALUES ('10', 'Maria', 'Rossi', '1964-03-01', 'Castel S Giovanni', 'PC'); >visualizza il nome del progetto con il maggior numero di materiali. in MySql si mette LIMIT 1 alla fine, con Access si usa TOP 1 dopo SELECT ------------ SELECT impiegati.nome, COUNT(progetti.n_progetto) FROM impiegati INNER JOIN progetti ON impiegati.codice=progetti.codice_imp GROUP BY impiegati.codice ORDER BY impiegati.codice LIMIT 1; >tutti i nati del 1988 ------------- SELECT * FROM impiegati WHERE YEAR(data_nascita)=1988; >modifica di un dato per tutti i record che rispettano la convenzione UPDATE impiegati SET impiegati.nome="SANDRO" WHERE impiegati.nome="MARCO";