.dsy:it. Pages (8): « First ... « 3 4 5 6 [7] 8 »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ comunicazione digitale (http://www.dsy.it/forum/forumdisplay.php?forumid=108)
-- esami perlasca 06/07 (http://www.dsy.it/forum/showthread.php?threadid=33477)


Posted by carlinus on 21-02-2008 16:36:

Originally posted by ARIEL
Ah cavolo mi sa che avevo sbagliato a scrivere la sottoquery....così forse potrebbe andare...

SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');


pure io l'ho fatta così e penso che sia giusta perchè conta il codP di un impiegato che ha partecipato a progetti microsoft con 500000 di budget se qst è uguale al numero tot di codp dei progetti progetti microsoft con 500000 di budget allora restituisce l'impiegato


Posted by LiJay on 21-02-2008 16:37:

SELECT DISTINCT impiegati.nome, impiegati.matr, progetti.budget
FROM impiegati, assegnamento, progetti
WHERE impiegati.matr = assegnamento.matr AND progetti.nome = 'microsoft' AND progetti.budget >= 500000
GROUP BY progetti.budget, impiegati.nome, impiegati.matr
HAVING count(impiegati.matr) = ( SELECT count(assegnamento.matr) AS count
FROM assegnamento, progetti
WHERE assegnamento.cod_progetto = progetti.cod_progetti AND progetti.nome = 'microsoft' AND progetti.budget >= 500000)

cosi' sono certa che va,mi sono creata apposta il db per provare le varie query^^


Posted by ARIEL on 21-02-2008 16:41:

:shock::shock::shock: è talmente contorta che non riesco nemmeno a capirla! Sarà anche che sono fusa, è da stamattina che sto facendo query! :cry:


Posted by ARIEL on 21-02-2008 16:44:

cmq come avete fatto la query:

Determinare gli impiegati che non sono stati assegnati ad alcun progetto?

@Lijay: se per caso hai tempo puoi provare anche la query:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');


Tanto per avere la certezza che funziona! Grazie


Posted by zyx on 21-02-2008 16:52:

ma a che ora è domani l'esame e dove si trova???


Posted by ARIEL on 21-02-2008 16:53:

L'esame di Gestione dell'Informazione si terrà il 22 Febbraio alle ore 14.00 in aula Beta, via Comelico


Posted by tolarian on 21-02-2008 16:57:

Originally posted by ARIEL
cmq come avete fatto la query:

Determinare gli impiegati che non sono stati assegnati ad alcun progetto?

@Lijay: se per caso hai tempo puoi provare anche la query:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');


Tanto per avere la certezza che funziona! Grazie


direi che manca l'ultimo pezzo

SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft' AND budget>='50000');


Posted by carlinus on 21-02-2008 17:00:

cmq come avete fatto la query:

Determinare gli impiegati che non sono stati assegnati ad alcun progetto?

io l'ho fatta così

SELECT i.nome
FROM Impiegati i
WHERE i.Matr NOT IN (SELECT i.Matr FROM Impiegati i, Progetti p, Assegnamento a WHERE i.matr=a.matr and p.codP=a.codP)

il concetto che ho cercato di scrivere è cerco gli impiegati che sono stati assegnati a qualche progetto se la matr nn è in qst elenco allora vuol dire che quell'impiegato nn è stato assegnato a nessun progetto



Posted by tolarian on 21-02-2008 17:03:

Originally posted by carlinus
cmq come avete fatto la query:

Determinare gli impiegati che non sono stati assegnati ad alcun progetto?

io l'ho fatta così

SELECT i.nome
FROM Impiegati i
WHERE i.Matr NOT IN (SELECT i.Matr FROM Impiegati i, Progetti p, Assegnamento a WHERE i.matr=a.matr and p.codP=a.codP)

il concetto che ho cercato di scrivere è cerco gli impiegati che sono stati assegnati a qualche progetto se la matr nn è in qst elenco allora vuol dire che quell'impiegato nn è stato assegnato a nessun progetto


Cosa ne dite di questa?

SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND not exists (SELECT a.matr FROM impiegati i, progetti p, assegnamento a WHERE i.matr=a.matr AND a.codP=p.codP)
GROUP BY i.matr


Posted by carlinus on 21-02-2008 17:07:

nn saprei alla fine l'interragazione è uguale alla sottointerrogazione


Posted by ARIEL on 21-02-2008 17:12:

Originally posted by tolarian
Cosa ne dite di questa?

SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND not exists (SELECT a.matr FROM impiegati i, progetti p, assegnamento a WHERE i.matr=a.matr AND a.codP=p.codP)
GROUP BY i.matr




Non so però nella prima select già colleghi le matricole di Impiegati con Assegnamento mentre se un impiegato non ha progetti assegnati la sua matricola non compare


Posted by Kardo on 21-02-2008 17:22:

Quella di carlinus mi sembra corretta.
Richiedo l'elenco di coloro che hanno partecipato a un progetto e poi gli dico che quello che cerco non è in quell'insieme.


Posted by tolarian on 21-02-2008 17:46:

sono fuso ormai :) cmq in una NOT IN posso mettere una colonna di una select??

dato che di solito è NOT IN (10,20,30) dove 10,20,30 sono i valori che voglio far escludere...

grazie


Posted by ARIEL on 21-02-2008 17:53:

Si è possibile infatti nelle slide c'è un esempio:
Elencare i titoli dei film di Quentin Tarantino usciti in un anno in cui non sono usciti film di Tim Burton

la soluzione del prof:

SELECT titolo
FROM Film
WHERE regista='Quentin tarantino' AND anno NOT IN (SELECT anno FROM Film WHERE regista='Tim Burton');

anche perche la select mi pare ti vada a scegliere dei valori secondo le condizioni che metti!


Posted by tolarian on 21-02-2008 17:57:

Originally posted by ARIEL
Si è possibile infatti nelle slide c'è un esempio:
Elencare i titoli dei film di Quentin Tarantino usciti in un anno in cui non sono usciti film di Tim Burton

la soluzione del prof:

SELECT titolo
FROM Film
WHERE regista='Quentin tarantino' AND anno NOT IN (SELECT anno FROM Film WHERE regista='Tim Burton');

anche perche la select mi pare ti vada a scegliere dei valori secondo le condizioni che metti!


ottimo...grazie


All times are GMT. The time now is 10:03. Pages (8): « First ... « 3 4 5 6 [7] 8 »
Show all 119 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.