Votre question

Probleme Requête Access

Tags :
  • téléphone
  • Programmation
Dernière réponse : dans Programmation
21 Octobre 2008 17:15:06

:cry: 
Bonjour,
Voila je suis étudiant en master système d'information et on nous demande de réaliser un TP sur les bases de donnée avec comme ecriture le mode sql.

Mon souci est que je suis pas très habile dans cette matière. Donc j'aimerai bien et bien sûre je remercie par avance pour toutes personnes qui pourrait m'aider à la réalisation de certaines requête.

les tables sont :

hotel(hotelID, nom, adresse, cp, ville, tel, nomGerant) : l’hôtel d’identifiant hotelID a pour nom nom, adresse adresse, code postal cp, ville ville, n° de téléphone tel, nom de gérant nomGerant.

chambre(chambreID, num, prix, hotelID) : la chambre d’identifiant (unique pour toute la chaîne hôtelière) chambreID a le n° (à l’intérieur de l’hôtel) num, le prix HT prix, et est située dans l’hôtel d’identifiant hotelID.

prestation(prestationID, libelle, prix, hotelID) : la prestation d’identifiant (unique pour toute la chaîne hôtelière)
prestationID de l’hôtel d’identifiant hotelID a le nom libelle et le prix HT prix.

reservation(reservationID, dateResa, chambreID, clientID, dateDebut, nbJour) : la réservation d’identifiant
reservationID a été effectuée à la date dateResa, pour la chambre d’identifiant chambreID, par le client d’identifiant
clientID, pour la date dateDebut et un nombre de jour nbJour. Si un client réserve plusieurs chambres, cela donne lieu a plusieurs réservations.

sejour(sejourID, chambreID, clientID, dateDebut, nbJour, reservationID) : le séjour d’identifiant sejourID concerne la
chambre chambreID, le client d’identifiant clientID, à partir de la date dateDebut pour un nombre de jours nbJour et intervient à la suite de la réservation reservationID (NULL si le séjour a été effectué sans réservation). Si un client a occupé plusieurs chambres, cela donnera lieu à un plusieurs séjours.

consomme(sejourID, prestationID, jour, qte) : il a été consommé pendant le sejour sejourID, une quantité qte de
prestation prestationID à la date jour.

facture(factureID, dateFact, sejourID) : la facture d’identifiant factureID a été émise à la date dateFact pour régler le séjour sejourID.

client(clientID, nomCli, prenomCli, adrCli, cpCli, villeCli, paysCli, telCli) : le client d’identifiant clientID a pour nom
nomCli, prénom prenomCli, adresse adrCli, code postal cpCli, ville villeCli, pays paysCli et n° de téléphone telCli.

Le taux de TVA applicable au prix des chambres et aux prestations est supposé fixe et égal à 19,6%.

Ecrire les requêtes suivantes dans lesquelles on supposera que hotelID = 1 :

a. Liste des séjours dont la durée est supérieure à celle de la réservation correspondante.

Ma proposition pour cette requête est
SELECT sejour.sejourID
FROM sejour, reservation
WHERE sejour.reservationID=reservation.reservationID And sejour.nbJour>reservation.nbJour;

b. Liste des chambres qui ne sont pas encore réservées pour une date (ultérieure) donnée en paramètre.

Pour cette requête qui me pose vraiment problème j'aimerai savoir si on ne pourrait pas créer une requête dans la quelle on aurait la liste de toutes les chambre occuper a une date donner.
Puis de creer une requête à l'aide de la précédente et de faire un NOT IN pour n'avoir que les chambres libres aux autres dates.

c. Liste des clients ayant occupé plusieurs chambres à une date de séjour donnée en paramètre.

d. Montant total TTC de chaque séjour, sachant que les séjours ayant donné lieu à une réservation donnent lieu à une surfacturation de 5 € TTC.

e. Pourcentage de chambres inoccupées pour chacun des jours d’une période donnée en paramètre.

f. Pourcentage pour chaque chambre, du nombre de nuits réservées dans cette chambre par rapport au nombre de nuits où
cette chambre a été occupée.


Merci encore pour votre aide car l'avenir de ma formation professionnelle en dépend alors encore un grand merci à vous tous

Autres pages sur : probleme requete access

a c 232 L Programmation
21 Octobre 2008 23:13:43

Salut,

a) ça devrait être ça

b) tu relis les tables chambre et réservation sur chambreID, et tu ajoutes dans une clause WHERE que la dateDebut est supérieure à la date passée en paramètre (@parametre ça doit s'écrire de mémoire)

c et le reste) tu n'as plus rien fait après ? c'est à nous de faire le reste ?
22 Octobre 2008 09:50:56

je travail en ce moment sur c'est requete mais je n'y arrive pas. Je ne lache pas l'affaire car je sais que j'y arriverais mais le probleme est que mes jour son compter pour faire ce tp car je dois le rendre pour Lundi 27 octobre 2008.

Je te remerci encore Omar. je vais essayer ta requete voir si elle marche mais j'avais pensé pour la requête b) a une formule avec Not In mais je sais pas trop.

Si tu peux m'aider par la suite que je compare mes resultat avec les tiens sa serais sympas.

Encore mille fois merci a++ :) 
Contenus similaires
a c 232 L Programmation
22 Octobre 2008 12:03:11

Tu n'as pas besoin de NOT IN dans la requête b), juste d'un <> ou != je sais plus c'est quoi en SQL (<> me semble)

c)
  • tu as besoin de lier 3 tables sejour, client et chambre
  • pour calculer le nombre de résultat par personne, il faut faire un GROUP BY
  • pour vérifier que le nombre de réservation est supérieur à 1 tu peux faire un HAVING COUNT(la colonne) > 1
  • et pour une date donnée, tu devrais pouvoir faire ça facilement avec un égal.

    d) Pour celle-ci, je pense que le plus simple est de faire deux requêtes (on pourrait en faire une seule avec un CASE WHEN ... ELSE ... sinon) que l'on va joindre avec UNION
    Pour tes deux requêtes :
  • tu as besoin de lier 2 tables sejour et chambre
    Pour la première requête :
  • tu prends tous les séjours où reservationID est null
  • pour avoir le prix TTC, tu multiplies le prix de la chambre par le nombre de jours et par la TVA
    Pour la deuxième requête :
  • tu prends tous les séjours où reservationID n'est pas null
  • pour avoir le prix TTC, tu multiplies le prix de la chambre par le nombre de jours, par la TVA et tu ajoutes 5€ au total pour la réservation

    Puis tu fais un UNION sur les deux requêtes :
    1. SELECT ...
    2. UNION
    3. SELECT ...


    Après, je ne sais pas à quoi correspond ta table prestation, il y aura peut être besoin d'ajouter des choses depuis cette table ?!

    e) là tu vas peut être avoir besoin d'un NOT IN avec une sous requête.
    http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/#...
    22 Octobre 2008 14:54:40

    Salut Omar encore merci pour ton aide.

    Je voulais te dire que j'ai essayé ta méthode pour la requete b) mais je n'ai pas compris ton @paramètre. ce que j'ai compris pour ta requete c'est de l'écrire de la manière suivante :

    SELECT CHAMBRE.CHAMBREID
    FROM HOTEL. CHAMBRE. RESERVATION
    WHERE HOTEL.HOTELID=1
    AND HOTEL.HOTELID=CHAMBRE.CHAMBREID
    AND CHAMBRE.CHAMBREID=RESERVATION.CHAMBREID
    AND DATE>(RESERVATION.DATEDEBUT+RESERVATION.NBJOUR)

    ET LA QUAND TU REGARDE POUR VOIR LE RESULTAT UNE FENETRE APPARAIT ET DEMANDE D'ENTRER UNE INFORMATION ALORS JE MET UNE DATE POUR VERIFIER POUR CERTAINE SA MARCHE MAIS POUR D'AUTRE NON.

    Est ce que si je t'envois une copie de ma base de donner t'aiderais a y voir plus clair? Si Oui donne moi ton adresse email o pire la mienne est ******@yahoo.fr

    encore merci Omar pour ton aide

    22 Octobre 2008 15:44:04

    envoie moi un mail et je te donnerai le nom d'utilisateur ainsi que le mot de passe
    a c 232 L Programmation
    22 Octobre 2008 17:08:07

    Il faut s'inscrire sur voila pour avoir le fichier :/ 

    Citation :
    AND HOTEL.HOTELID=CHAMBRE.CHAMBREID

    Si tu relis l'hotel et la chambre en se basant sur le fait que l'ID de l'hotel est égal à l'id de la chambre, tu vas pas aller bien loin ;-)

    l'histoire du @parameter c'est parce qu'il me semble qu'access gère les paramètres avec un @ devant, mais je peux me tromper, je n'ai jamais vraiment fait d'access... (ils sont gérés comme ça en SQL en tout cas)

    PS : j'ai supprimé ton adresse mail, évite de la donner sur des forums si tu veux pas avoir du spam
    22 Octobre 2008 20:09:14

    je t'ai envoyer un message perso danslequel je te laisse les coordonner pour te loguer sur voila. Merci encore
    a c 232 L Programmation
    22 Octobre 2008 20:51:42

    ok, j'avais pas compris ça comme ça...
    Mais non, on ne relis pas hotelID avec ChambreID
    TU peux relier hotel.hotelID avec chambre.hotelID par contre

    là tu dis tu veux tous les hotels et toutes les chambres dont l'ID de l'hotel est égal à l'ID de la chambre...
    23 Octobre 2008 10:23:55

    salut Omar.
    j'ai essayer les instruction que tu ma dis pour toutes les requêtes mais apparament sa ne marche pas.

    Pourrais tu me les décrire comment toi tu les marques sous access en sql?

    j'ai essayer plein de truc mais a chaque fois j'ai une fenetre qui apparait et qui me demande d'entrer une valeur. Sa commence vraiment à m'agacer. Mais je prend sur moi.

    en tous cas c'est super sympas pour tous ce que tu fais.

    j'espere qu'on pourra rester en contact pour d'autre circonstance notament si tu a une ps3 on pourrait faire des partis.

    Le problème c'est que en ce moment j'ai vraiment pas le temps avec tous les tp que je dois rendre et donc elle commence sérieusement a prendre de la poussière lol. :D 
    a c 232 L Programmation
    23 Octobre 2008 12:06:13

    Bah si tu as une fenêtre pour demander une valeur c'est parce que tu as mis un paramètre, c'est bien ce qu'il faut non ?

    Après, je ne les ai pas tapé sous Access, je te dis juste ce que j'aurais fait, ce n'est pas forcément tout exact à 100%.

    Et non, je n'ai pas de PS3 ^^
    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS