 |
roberto85 |
| [QUOTE]Select i.nome, p.matrResponsabile, c.compet ... |
21-02-2008 09:33 |
|
 |
roberto85 |
.simpatizzante.
Registered: Nov 2004
Posts: 18 (0.00 al dì)
Location: Novara
Corso: Comunicazione Digitale
Anno: terzo
Time Online: 17:48:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Select i.nome, p.matrResponsabile, c.competenza
From impiegati i,competenze c,progetti p
where i.matr = p.matrResponsabile and i.matr = c.matr
group by c.competenza, i.nome, p.matrResponsabile
(non mi ricordo se devono andare tutti e tre nel group by)
having count (competenza) >= 5
non basta mettere nel group by solo c. competenza, i.nome?
Il group by funziona solamente se si mettono tutti i campi che ci sono nella select, sulle slide del prof nella categoria funzioni di raggruppamento c'è proprio un esempio a rigardo!
|
|
21-02-2008 09:33 |
|
|
|  |
 |
ARIEL |
| C'era anche la query:
... |
21-02-2008 09:40 |
|
 |
ARIEL |
.grande:maestro.

Registered: Jul 2005
Posts: 636 (0.08 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline
Edit | Report | IP: Logged |
C'era anche la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto
|
|
21-02-2008 09:40 |
|
|
|  |
 |
Melodiaz |
| [QUOTE][i]Originally posted by Melodiaz [/i]
... |
21-02-2008 10:48 |
|
 |
Melodiaz |
Mr. Blonde
Registered: Sep 2004
Posts: 223 (0.03 al dì)
Location:
Corso: Comunicazione digitale
Anno: 3
Time Online: 2 Days, 17:06:45 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by Melodiaz
scusate qualcuno potrebbe postare lo schema er corretto dell'appello di gennaio? ho ancora qualche dubbio a proposito...
THX
mi autoquoto sperando che qualche anima pia mi risponda...grassie
|
|
21-02-2008 10:48 |
|
|
|  |
 |
ARIEL |
| purtroppo penso che lo schema corretto non ce l'ab ... |
21-02-2008 11:08 |
|
 |
ARIEL |
.grande:maestro.

Registered: Jul 2005
Posts: 636 (0.08 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline
Edit | Report | IP: Logged |
purtroppo penso che lo schema corretto non ce l'abbia nessuno!
|
|
21-02-2008 11:08 |
|
|
|  |
 |
Melodiaz |
| nooooooo...va beh iniziero' a strapparmi i capelli ... |
21-02-2008 11:25 |
|
 |
Melodiaz |
Mr. Blonde
Registered: Sep 2004
Posts: 223 (0.03 al dì)
Location:
Corso: Comunicazione digitale
Anno: 3
Time Online: 2 Days, 17:06:45 [...]
Status: Offline
Edit | Report | IP: Logged |
nooooooo...va beh iniziero' a strapparmi i capelli per domani...ormai a causa di sto esame sto diventando pelato
|
|
21-02-2008 11:25 |
|
|
|  |
 |
ARIEL |
| perchè invece non provi a postare i tuoi dubbi? m ... |
21-02-2008 11:26 |
|
 |
ARIEL |
.grande:maestro.

Registered: Jul 2005
Posts: 636 (0.08 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline
Edit | Report | IP: Logged |
perchè invece non provi a postare i tuoi dubbi? magari qualcuno può risponderti ugualmente...
|
|
21-02-2008 11:26 |
|
|
|  |
 |
ARIEL |
| [QUOTE][i]Originally posted by LiJay [/i]
... |
21-02-2008 12:54 |
|
 |
ARIEL |
.grande:maestro.

Registered: Jul 2005
Posts: 636 (0.08 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by LiJay
nell'ultima devi fare una divisione...io ho fatto così:
SELECT budget
FROM progetti p,assegnamento a
WHERE p.codP=a.codP AND Budget>=500000 AND p.nome='microsoft'
GROUP BY matr
HAVING COUNT(matr)=(SELECT COUNT(matr) FROM progetti WHERE nome='microsoft')
Io invece la farei così:
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 (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');
|
|
21-02-2008 12:54 |
|
|
|  |
 |
tolarian |
| [QUOTE][i]Originally posted by ARIEL [/i]
... |
21-02-2008 13:53 |
|
 |
tolarian |
Il Mezzorco Druido

Registered: Oct 2004
Posts: 144 (0.02 al dì)
Location: Biella
Corso: Comunicazione Digitale
Anno: 3°
Time Online: 1 Day, 13:36:52 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ARIEL
Io invece la farei così:
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 (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');
Non la capisco molto l'ultima riga...
4)determinare gli impiegati che sono stati aseegnati a tutti i progetti microsoft avente budget di almeno 500000 euro -->vuol dire di trovare gli impiegati che lavorano in tutti i progetti microsoft con un budget >= 500000 oppure trovare tutti gli impiegati che lavorano in progetti microsoft con un budget >= 500000 ???
cmq con l'having che hai scritto non risolveresti: impiegati.nome è sicuramente il nome dell'impiegato, mentre come controllo tu conteggi le matricole che lavorano in progetti microsoft >=500000 però la query tiene anche conto di quelli che lavorano in almeno uno di questi progetti...
quindi io ho scritto la query per la 2° mia ipotesi 
Ecco quello che ho fatto io...
Es.2
impiegati(matr,nome,codDip)
dipartimenti(codDip,nome)
competenze(u][matr,competenza[/u])
progetti(codP,nome,sede,budget,matrResponsabile)
assegnamento(codP,matr,data,numore,descrizione)
1)determinare per ogni progetto presso cui ha lavorato l'impiegato 1234 il numero totale di giorni e di ore lavorativa effettuati
2)determinare le competenze per le quali esiste un unico impiegato che le possiede
3)trovare il nome e la matricola dei responsabili che possiedono almeno 5 competenze
4)determinare gli impiegati che sono stati aseegnati a tutti i progetti microsoft avente budget di almeno 500000 euro
1)SELECT p.codP, SUM(a.numore), COUNT(a.data)
FROM progetti p, assegnamento a, impiegati i
WHERE a.matr=i.matr AND p.codP=a.codP AND i.matr=’1234’
GROUP BY p.codP
2)SELECT matr, competenza
FROM competenze
GROUP BY competenza, matr
HAVING COUNT(c.competenza)=1
3)SELECT i.nome, p.matrResponsabile
FROM impiegati i, competenze c, progetti p, assegnamento a
WHERE i.matr=c.matr AND c.matr=p.matrResponsabile AND a.codP=p.codP AND a.matr=i.matr
GROUP BY i.nome, p.matrResponsabile
HAVING COUNT(c.competenze) > 4
4)SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND p.budget >= 500000 AND p.nome=’microsoft’
GROUP BY i.matr
Es.3
AB-->E
AE-->F
AD-->B
C-->D
A destra non compare mai A e C ... quindi fanno parte della chiave;
AC-->ACD-->ABCD-->ABCDE-->ABCDEF è chiave
non è in 3NF e neanche in BCNF
ora faccio anche il resto...
PS se ho sbagliato qualcosa ditemelo 
|
|
21-02-2008 13:53 |
|
|
|  |
 |
tolarian |
| [QUOTE][i]Originally posted by ARIEL [/i]
... |
21-02-2008 13:57 |
|
 |
tolarian |
Il Mezzorco Druido

Registered: Oct 2004
Posts: 144 (0.02 al dì)
Location: Biella
Corso: Comunicazione Digitale
Anno: 3°
Time Online: 1 Day, 13:36:52 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ARIEL
io personalmente prima ho controllato se lo schema è minimale (ovvero se non ci sono ridondanze...i passaggi da fare li trovi sulle slide nuove sul sito di perlasca) poi ho diviso in relazioni in base alle dipendenze che avevo tipo: ho AB-->E quindi R1(ABE) e così via e poi controlli se è in 3nf.
mi potresti inviare via pm sia il link che lo usr e psw delle slide???
grazie
|
|
21-02-2008 13:57 |
|
|
|  |
 |
Kardo |
| Doppio post. Sorry. ... |
21-02-2008 14:20 |
|
 |
Kardo |
.consigliere.
Registered: Oct 2003
Posts: 113 (0.01 al dì)
Location:
Corso: Comunicazione Digitale
Anno: Nella speranza di finire
Time Online: 1 Day, 4:47:26 [...]
Status: Offline
Edit | Report | IP: Logged |
Doppio post. Sorry.
Last edited by Kardo on 21-02-2008 at 15:37
|
|
21-02-2008 14:20 |
|
|
|  |
 |
Kardo |
| [QUOTE][i]Originally posted by ARIEL [/i]
... |
21-02-2008 14:21 |
|
 |
Kardo |
.consigliere.
Registered: Oct 2003
Posts: 113 (0.01 al dì)
Location:
Corso: Comunicazione Digitale
Anno: Nella speranza di finire
Time Online: 1 Day, 4:47:26 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ARIEL
Io invece la farei così:
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 (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');
SELECT i.Matr, i.Nome
FROM Impiegati i, Progetti p, Assegnamento a
WHERE a.Matr=i.Matr AND a.codP=p.CodP AND budget>='50000' AND p.Nome='Microsoft' AND NOT EXIST (SELECT i.Nome, p.CodP
FROM Impiegati i, Progetti p, Assegnamento a
WHERE a.Matr=i.Matr AND a.codP=p.CodP AND p.Nome<>'Microsoft')
Io l'ho fatta con il group by, ma sono giuste entrambe, credo, perchè sulle slide la divisione viene espressa, o usando la doppia negazione (not exist) o con le funzioni di gruppo.
|
|
21-02-2008 14:21 |
|
|
|  |
 |
tolarian |
| [QUOTE][i]Originally posted by Kardo [/i]
... |
21-02-2008 14:49 |
|
 |
tolarian |
Il Mezzorco Druido

Registered: Oct 2004
Posts: 144 (0.02 al dì)
Location: Biella
Corso: Comunicazione Digitale
Anno: 3°
Time Online: 1 Day, 13:36:52 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by Kardo
Io l'ho fatta con il group by, ma sono giuste entrambe, credo, perchè sulle slide la divisione viene espressa, o usando la doppia negazione (not exist) o con le funzioni di gruppo.
mi potete dare il link delle slide per piacere?
grazie
|
|
21-02-2008 14:49 |
|
|
|  |
 |
ARIEL |
| 4)SELECT i.matr
... |
21-02-2008 15:00 |
|
 |
ARIEL |
.grande:maestro.

Registered: Jul 2005
Posts: 636 (0.08 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline
Edit | Report | IP: Logged |
4)SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND p.budget >= 500000 AND p.nome=’microsoft’
GROUP BY i.matr
Con questa query penso che nel risultato siano compresi anche quegli impiegati che sono stati assegnati a un solo progetto microsoft con budget >=50000 mentre penso che la query vuole sapere gli impiegati che partecipano a tutti i progetti microsoft...
io l'ho intesa così!
|
|
21-02-2008 15:00 |
|
|
|  |
 |
tolarian |
| [QUOTE][i]Originally posted by ARIEL [/i]
... |
21-02-2008 15:16 |
|
 |
tolarian |
Il Mezzorco Druido

Registered: Oct 2004
Posts: 144 (0.02 al dì)
Location: Biella
Corso: Comunicazione Digitale
Anno: 3°
Time Online: 1 Day, 13:36:52 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ARIEL
4)SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND p.budget >= 500000 AND p.nome=’microsoft’
GROUP BY i.matr
Con questa query penso che nel risultato siano compresi anche quegli impiegati che sono stati assegnati a un solo progetto microsoft con budget >=50000 mentre penso che la query vuole sapere gli impiegati che partecipano a tutti i progetti microsoft...
io l'ho intesa così!
lo so, però nn penso possa funzionare
HAVING COUNT (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');
dato che conteggia le matricole sopra citate e fa un eguaglianza al conteggio di tutti gli impiegati che si chiamano Microsoft (perchè fai From impiegati Where nome='Microsoft') ... avrebbe più senso fare FROM progetti Where nome='Microsoft' ma calcoleresti tutte le persone che lavorano ad almeno un progetto microsoft ... se sto dicendo vaccate ditemelo 
|
|
21-02-2008 15:16 |
|
|
|  |
 |
ARIEL |
| Ah cavolo mi sa che avevo sbagliato a scrivere la ... |
21-02-2008 15:32 |
|
 |
ARIEL |
.grande:maestro.

Registered: Jul 2005
Posts: 636 (0.08 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline
Edit | Report | IP: Logged |
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');
|
|
21-02-2008 15:32 |
|
|
|  |
 |
| All times are GMT. The time now is 22:37. |
|
|
 |
|
 |
|
|
|  |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|