Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 23h37   #1
Invité de passage
 
Ramy Bouzouita
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Ramy Bouzouita

Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
Par défaut Soyez mon messie

caravane (ncar, duréecar, noasisdep, noasisarr, datdcar, datarrcar)
escale (ncarf, nesc, duréesc, datdesc, datarresc, noasis)
oasis (noasis, nomoasis, positiongéo)
transport (ncar, nchameau)
chameau (nchameau, nom, propchameau)


6: trouver les numéros de caravanes qui ont plus de 7 escales.
7: trouver les escales qui apparaissent comme dernière escale plus de 2 fois.

Ces requêtes doivent être un jeu d'enfant pour la plupart des gens mais pour moi c'est mon année qui passe à la trappe si je ne les ai pas faites pour demain matin ...
Je supplie donc tout ceux qui liront ce mot de m'aider...
Les 3 langages que l'on nous demande sont algébrique, prédicatif et SQL... autant dire du chinois pour le moment.

Merci d'avance
delramy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 01h00   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Citation:
Soyez mon messi
Je veux bien être ton Messi mais je te préviens, le salaire est de 700 000 euros par mois !

Copier/coller de la réponse que j'ai faite à un de tes collègues hier après-midi :

Citation:
6: trouver les numéros de caravanes qui ont plus de 7 escales.

Pour la 1e je pense a utiliser "COUNT" pour compter le nombre d'escales par caravane et dont grouper ça par numéro de Caravanes avec un group by, mais comment écrire la condition pour que le count soit supérieur à 7 ?
=> HAVING COUNT(*) > 7

HAVING est un WHERE qui opère sur le résultat du groupage.

Citation:
7: trouver les escales qui apparaissent comme dernière escale plus de 2 fois.
Si je comprends bien la description de tes tables, une escale est relative à une caravane ?
Il faut alors grouper par caravane (ncarf) et chercher la datedesc maxi puis faire une jointure de cette requête avec escale sur la ncarf et la datemax pour avoir les identifiants de ces escales et enfin grouper cette requête par identifiant d'escale et ne retenir comme précédemment que les escales dont le comptage est supérieur à 2.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 02h35   #3
Invité de passage
 
Ramy Bouzouita
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Ramy Bouzouita

Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
Pour commencer merci beaucoup pour le temps que tu prends pour me répondre, est ce qu'une requête de la sorte pour la question 6 serait correcte ?
Code :
1
2
3
4
 
SELECT E.ncar 
FROM EscaleE
HAVING COUNT (E.nesc) > 7 ;
Pour la 7 :

Code :
1
2
3
4
5
6
7
SELECT E.nesc
FROM Escale E
GROUP BY E.ncarf
AND MAX (Datedesc)
AND E.ncarf = E. date max
AND GROUP BY E.nesc
AND HAVING COUNT (E. nesc) > 2;
Alors je te dis ce qu'on a compris à deux :

je t'envoie tout l'énoncé pour que tu puisses mieux voir au cas où ... et bonne nouvelle, on m'a annoncé qu'on pouvait le faire pour vendredi matin alors ça me donne 24h de survie en plus


CARAVANE DE CHAMEAUX (3 LANGAGES)
La base de données comporte les relations suivantes:
caravane (ncar, duréecar, noasisdep, noasisarr, datdcar, datarrcar)
escale (ncarf, nesc, duréesc, datdesc, datarresc, noasis)
oasis (noasis, nomoasis, positiongéo)
transport (ncar, nchameau)
chameau (nchameau, nom, propchameau)
Une caravane a une durée (duréecar) une date de départ (datdcar), une date d'arrivée (datarrcar), une oasis de départ (noasisdep), une oasis d'arrivée (noasisarr), un ensemble d'escales et un ensemble de chameaux. Chaque escale est identifiée par un numéro d'ordre relatif à la caravane (nesc) et concerne un arrêt effectué a une oasis dont on connaît: la durée d'arrêt (duréesc), l'horaire d'arrivée (datarresc) et l'horaire de départ (datdesc).
On vous demande de répondre aux questions suivantes en utilisant successivement le langage algébrique, le langage prédicatif et SQL.

Mais j'ai l'impression que ça ne se fait pas en algébrique et en prédicatif non ? (notre prof nous a dit de le faire dans les 3 langages, mais est-ce que tu penses que ça peut se faire dans les 3 réellement?)

Merci beaucoup encore une fois du fond du cœur
delramy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 09h50   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par delramy Voir le message
est ce qu'une requete de la sorte pour la question 6 serait correcte ?

Code :
1
2
3
SELECT E.ncar 
FROM EscaleE
HAVING COUNT (E.nesc) > 7 ;
Quand on utilise HAVING, il faut aussi utiliser GROUP BY !
Et en l'occurrence, il est inutile de compter les nesc, il suffit de compter les lignes de résultat donc COUNT(*) est suffisant et plus performant.

Citation:
Code :
1
2
3
4
5
6
7
8
9
Pour la 7 : 
 
SELECT E.nesc
FROM Escale E
GROUP BY E.ncarf
AND MAX (Datedesc)
AND E.ncarf = E. date max
AND GROUP BY E.nesc
AND HAVING COUNT (E. nesc) > 2;
On ne peut pas faire de AND dans un GROUP BY !

Relis bien mon message précédent. Il doit y avoir au moins une sous-requête dans ta requête.


Citation:
CARAVANE DE CHAMEAUX (3 LANGAGES)
La base de données comporte les relations suivantes:
caravane (ncar, duréecar, noasisdep, noasisarr, datdcar, datarrcar)
escale (ncarf, nesc, duréesc, datdesc, datarresc, noasis)
oasis (noasis, nomoasis, positiongéo)
transport (ncar, nchameau)
chameau (nchameau, nom, propchameau)
Une caravane a une durée (duréecar) une date de départ (datdcar), une date d'arrivée (datarrcar), une oasis de départ (noasisdep), une oasis d'arrivée (noasisarr), un ensemble d'escales et un ensemble de chameaux. Chaque escale est identifiée par un numéro d'ordre relatif à la caravane (nesc) et concerne un arrêt effectué a une oasis dont on connaît: la durée d'arrêt (duréesc), l'horaire d'arrivée (datarresc) et l'horaire de départ (datdesc).
On vous demande de répondre aux questions suivantes en utilisant successivement le langage algébrique, le langage prédicatif et SQL.

Mais j'ai l'impression que ca ne se fait pas en algérique et en prédicatif non ? (notre prof nous a dit de le faire dans les 3 langages, mais est ce que tu penses que ca peut se faire dans les 3 réellement?)
Peut-être que l'algébrique et le prédicatif font référence à l'algèbre relationnelle ?
Ce n'est pas ma spécialité mais celle de fsmrel. Voir l'annexe de son tutoriel sur la normalisation des BDD.

Comme je crois qu'il ne passe que très rarement sur ce forum, peut-être qu'en lui envoyant un gentil MP lui demandant de regarder cette discussion, il voudra bien vous aider sur cette partie ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 21h19   #5
Invité de passage
 
Ramy Bouzouita
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Ramy Bouzouita

Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
merci beaucoup de nouveau, j'ai pu en discuter avec des amis et voila ce que nous avons réussi à faire :

Code :
1
2
3
4
SELECT E.ncar
FROM EscaleE
GROUP BY E.nesc 
HAVING COUNT E.nesc>7 ;
pour la 7 :

Code :
1
2
3
SELECT E.nesc
FROM EscaleE
WHERE MAX ( E.datedesc) IN ( SELECT E.nacarf FROM EscaleE WHERE E.ncarf = E.datedesc AND HAVING COUNT E.nesc >2 ) ;

merci encore !
delramy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h17.


 
 
 
 
Partenaires

Hébergement Web