Auteur |
Message |
harlem
Forumeur occasionnel
Sexe:
Messages: 26
|
Posté le:
Lun 14 Mai 2007 - 20:31 |
|
lol je suis trop lent a ecrire, ça deja été dis |
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
Scalp
Newbiiiie
Messages: 11
|
Posté le:
Lun 14 Mai 2007 - 20:32 |
|
Je suis entièrement d'accord avec hm, étant donné que pour le MCD, pour l'algo et pour le SQL j'ai exactement fait la même chose à quelques détail près. |
|
|
|
|
ghost
Newbiiiie
Messages: 5
|
Posté le:
Lun 14 Mai 2007 - 20:33 |
|
jss pas sur genzo !!!
parce que la c'est pas un critere de section,
donc je crois qu'il va te retourner le max de chaque total par nom
c'est a dire tout les totaux de tous les noms.
(a confirmer)
sinon par rapport tjs a la correction proposé les relative de operation je les ai faites ds l'autres sens pour ce qui est des cardinalités.
une opération = comprend plusieurs categories (donc 0,N)
a l'inverse une categorie conprend une operation ( donc (1,1) relative)
je me suis planté ou pas ??? |
|
|
|
|
hm
Forumeur occasionnel
Messages: 24
|
Posté le:
Lun 14 Mai 2007 - 20:37 |
|
Harlem> j'ai fini a 16h45, le serveur a une heure de retard ^^
exact pour le curseur j'ai du me planter !
ghost> pour moi une opération est le plus fin niveau de détail (donc une categorie comprend plusieurs sous-cat qui comprend plusieurs opérations) |
Dernière édition par hm le Lun 14 Mai 2007 - 20:40; édité 1 fois |
|
|
|
OxD
Newbiiiie
Messages: 3
Localisation: Grenoble Plage
|
Posté le:
Lun 14 Mai 2007 - 20:40 |
|
Hello!
Pour la 2. b) on ne demandait que le nom des sous traitant et un sous-traitant a plusieurs contrat donc, a mes yeux, ton SELECT est pas tout à fait juste.
Code: |
SELECT distinct ST.nom |
Pour l'ALSI, la question 2. c) je rejoins ce qu'a fait harlem sauf que j'ai créé une vue pour que ca soit mon pompeux au niveau de la requête
Code: |
CREATE VIEW V AS
SELECT ST.nom, sum(C.nbTotRDVPris) as TotRDV
FROM SOUS_TRAITANT ST, CONTRAT C
WHERE ST.code = C.codeSousTraitant
GROUP BY ST.nom;
SELECT nom, TotRDV
FROM V
WHERE TotRDV = (SELECT max(TotRDV) FROM V);
DROP VIEW V;
|
Sinon le reste me semble bon
Bonne chance pour demain[/code] |
|
|
|
|
Genzo
Modérateur
Sexe:
Messages: 1706
Localisation: Sartrouville (78)
|
Posté le:
Lun 14 Mai 2007 - 20:47 |
|
ghost a écrit: |
jss pas sur genzo !!! |
Toute facon moi j'ai fait du grand n'importe quoi pour ce fameux calcul
J'avais pas tout lu sur le MLD. |
_________________ N'oubliez pas de mettre un avis sur votre lycée/centre de formation !!! Pensez aux futurs BTSiens. Merci |
|
|
|
Mojales
Newbiiiie
Messages: 1
|
Posté le:
Lun 14 Mai 2007 - 20:53 |
|
Pour la question 2.1.c, je penche plutot pour cette solution :
Code: |
SELECT nom, SUM (nbTotRDVPris)
FROM Sous-Traitant ST, Contrat C
WHERE ST.code=C.codeSousTraitant
GROUP BY nom
HAVING SUM (nbTotRDVPris) >= (SELECT SUM (nbTotRDVPris)
FROM Sous-Traitant ST, Contrat C
WHERE ST.code=C.codeSousTraitant);
|
ensuite pour le MCD la ternaire n'est pas la bonne solution.
Puis la procédure (2.2) il n'y a pas de soustraction a faire (240 - chargeMAT) |
Dernière édition par Mojales le Lun 14 Mai 2007 - 20:56; édité 1 fois |
|
|
|
d-rek
Newbiiiie
Sexe:
Messages: 10
|
Posté le:
Lun 14 Mai 2007 - 20:53 |
|
d-rek a écrit: |
Pour la requête C vous êtes sûr de votre coup ?? |
Heureusement que j'étais là..
Moi j'ai fait
Code: |
SELECT S.nom, MAX(SUM(C.nbTotRDVPris ))
FROM SOUS_TRAITANT S, CONTRAT C
WHERE S.code = C.codeSousTraitant |
"Tout simplement.." (© Keyloggs) |
|
|
|
|
hm
Forumeur occasionnel
Messages: 24
|
Posté le:
Lun 14 Mai 2007 - 20:57 |
|
d-rek a écrit: |
d-rek a écrit: |
Pour la requête C vous êtes sûr de votre coup ?? |
Heureusement que j'étais là..
Moi j'ai fait
Code: |
SELECT S.nom, MAX(SUM(C.nbTotRDVPris ))
FROM SOUS_TRAITANT S, CONTRAT C
WHERE S.code = C.codeSousTraitant |
"Tout simplement.." (© Keyloggs) |
Avec cette requete tu vas avoir le nom de tous les sous-traitant avec le nombre max d'un seul sous-traitant
En fait je pense que ma solution (page1) est juste, etant donné que le sujet précise que la table contient les contrats de l'année EN COURS
Or, la propriété NbTotRDVPris contient le nombre de RDV de l'année en cours
Edit: en fait non, un sous-traitant peut passer plusieurs contrats |
|
|
|
|
jack
Newbiiiie
Sexe:
Messages: 11
|
Posté le:
Lun 14 Mai 2007 - 20:59 |
|
OxD a écrit: |
SELECT nom, TotRDV
FROM V
WHERE TotRDV = (SELECT max(TotRDV) FROM V);
[/code] |
C'est pas très malin comme reponse |
|
|
|
|
Fabino
Newbiiiie
Sexe:
Messages: 5
Localisation: Toulouse
|
Posté le:
Lun 14 Mai 2007 - 21:00 |
|
Moi aussi, je me suis planté sur cette requête.
Je crois qu'il faut faire ça, mais j'en suis pas sur. Qu'en pensez-vous ?
Code: |
SELECT Nom, Sum(nbTotRDVPris) as TotalRdV
FROM SOUS_TRAITANT as ST, CONTRAT as C
WHERE ST.code=C.codeSousTraitant
GROUP BY Nom
HAVING TotalRdV= (SELECT MAX(Sum(nbTotRDVPris))
FROM SOUS_TRAITANT as ST, CONTRAT as C
WHERE (ST.code=C.codeSousTraitant) ) |
|
|
|
|
|
jack
Newbiiiie
Sexe:
Messages: 11
|
Posté le:
Lun 14 Mai 2007 - 21:03 |
|
Fabino a écrit: |
Moi aussi, je me suis planté sur cette requête.
Je crois qu'il faut faire ça, mais j'en suis pas sur. Qu'en pensez-vous ?
Code: |
SELECT Nom, Sum(nbTotRDVPris) as TotalRdV
FROM SOUS_TRAITANT as ST, CONTRAT as C
WHERE ST.code=C.codeSousTraitant
GROUP BY Nom
HAVING TotalRdV= (SELECT MAX(Sum(nbTotRDVPris))
FROM SOUS_TRAITANT as ST, CONTRAT as C
WHERE (ST.code=C.codeSousTraitant) ) |
|
Il te faut forcement un group by sur la deuxieme requete sinon tu recherche le max d'une seule somme |
|
|
|
|
kazhar
Accro à Web-IG
Sexe:
Messages: 126
Localisation: Lyon
|
Posté le:
Lun 14 Mai 2007 - 21:03 |
|
Pour cette requête, j'ai fait :
Code: |
SELECT nom, nbTotRDVPris
FROM sous_traitant, contrat
WHERE code = codeSousTraitant
AND nbTotRDVPris = (SELECT MAX(sum(nbTotRDVPrid))
FROM contrat); |
|
|
|
|
|
hm
Forumeur occasionnel
Messages: 24
|
Posté le:
Lun 14 Mai 2007 - 21:04 |
|
Bon je me suis décidé a ressortir mes cours ^^
en fait pas de group by avec un MAX dans le select, obligé de passer par une vue pour ce genre de probleme, bien vu OxD |
|
|
|
|
jack
Newbiiiie
Sexe:
Messages: 11
|
Posté le:
Lun 14 Mai 2007 - 21:05 |
|
kazhar a écrit: |
Pour cette requête, j'ai fait :
Code: |
SELECT nom, nbTotRDVPris
FROM sous_traitant, contrat
WHERE code = codeSousTraitant
AND nbTotRDVPris = (SELECT MAX(sum(nbTotRDVPrid))
FROM contrat); |
|
il manque la jointure |
|
|
|
|
OxD
Newbiiiie
Messages: 3
Localisation: Grenoble Plage
|
Posté le:
Lun 14 Mai 2007 - 21:05 |
|
jack a écrit: |
OxD a écrit: |
SELECT nom, TotRDV
FROM V
WHERE TotRDV = (SELECT max(TotRDV) FROM V);
[/code] |
C'est pas très malin comme reponse |
tu peux approfondir ? |
|
|
|
|
Fabino
Newbiiiie
Sexe:
Messages: 5
Localisation: Toulouse
|
Posté le:
Lun 14 Mai 2007 - 21:06 |
|
jack a écrit: |
Fabino a écrit: |
Moi aussi, je me suis planté sur cette requête.
Je crois qu'il faut faire ça, mais j'en suis pas sur. Qu'en pensez-vous ?
Code: |
SELECT Nom, Sum(nbTotRDVPris) as TotalRdV
FROM SOUS_TRAITANT as ST, CONTRAT as C
WHERE ST.code=C.codeSousTraitant
GROUP BY Nom
HAVING TotalRdV= (SELECT MAX(Sum(nbTotRDVPris))
FROM SOUS_TRAITANT as ST, CONTRAT as C
WHERE (ST.code=C.codeSousTraitant) ) |
|
Il te faut forcement un group by sur la deuxieme requete sinon tu recherche le max d'une seule somme |
C'est ce qu'il demandé. "Le sous-traitant ayant obtenu le plus grand nombre de RDV".
Et puis il me semble aussi que c'est impossible de mettre un group by sur la deuxième.
Enfin, je pense que c'est ça. |
|
|
|
|
jack
Newbiiiie
Sexe:
Messages: 11
|
Posté le:
Lun 14 Mai 2007 - 21:07 |
|
hm a écrit: |
Bon je me suis décidé a ressortir mes cours ^^
en fait pas de group by avec un MAX dans le select, obligé de passer par une vue pour ce genre de probleme, bien vu OxD |
relis bien tes cours |
|
|
|
|
Fabino
Newbiiiie
Sexe:
Messages: 5
Localisation: Toulouse
|
Posté le:
Lun 14 Mai 2007 - 21:08 |
|
jack a écrit: |
hm a écrit: |
Bon je me suis décidé a ressortir mes cours ^^
en fait pas de group by avec un MAX dans le select, obligé de passer par une vue pour ce genre de probleme, bien vu OxD |
relis bien tes cours |
Il me semble que tu as raison jack.
Il ne faut pas de Group By quand il y a juste qu'un MAX dans le SELCT |
|
|
|
|
hm
Forumeur occasionnel
Messages: 24
|
Posté le:
Lun 14 Mai 2007 - 21:10 |
|
Code: |
CREATE VIEW V_TOTALRDV
AS
SELECT S.nom, SUM(C.nbTotRDVPris) AS total
FROM SOUS_TRAITANT S, CONTRAT C
WHERE S.code = C.codeSousTraitant
GROUP BY S.nom;
SELECT nom, total
FROM V_TOTALRDV
WHERE total = ( SELECT MAX(total) FROM V_TOTALRDV ); |
|
|
|
|
|
|