Requete SQL - SQL/NoSQL - Programmation
Marsh Posté le 03-11-2017 à 15:05:28
Je ne comprends pas trop la logique de la structure des tables relatives à la location Pourquoi la table location ne contient pas une date de début et de fin ? Quel est l'intérêt de la table LocSemaine ?
Au passage, je doute que numSemaine dans LocSemaine soit une clé étrangère : c'est plutôt une clé primaire
Marsh Posté le 03-11-2017 à 15:17:50
Dolb66 a écrit : Bonsoir,
|
Salut,
Si je comprends bien, tu voudrais le nombre de jours de location pour un client donné ?
Marsh Posté le 03-11-2017 à 16:01:22
Select loc.numLocation, cl.nomClient, cl.prenomClient, COUNT(ls.numSemaine) AS NbSemaines
FROM location loc INNER JOIN client cl ON (cl.numClient = loc.numeroclient) INNER JOIN LocSemaine ls ON (loc.numLocation = ls.numLocation)
GROUP BY loc.numLocation, cl.nomClient, cl.prenomClient
ORDER BY cl.nomClient, cl.prenomClient
Mais comme indiqué, je ne vois pas l'utilité de séparer en 2 tables les locations et les semaines puisque juste en mettant la date de fin de la location, tu as toutes les infos
Marsh Posté le 03-11-2017 à 16:01:40
Pas compris ou était le problème ? je répond peut-être à côté du coup
Select location.numLocation,client.nomClient, client.prenomClient, Count(*)
FROM location INNER JOIN client ON client.numClient=location.Client_numClient
INNER JOIN locsemaine ON locsemaine.Location_numLocation = location.numLocation
Group by location.numLocation,client.nomClient, client.prenomClient;
Marsh Posté le 03-11-2017 à 16:59:56
Grillé de 18s
Marsh Posté le 03-11-2017 à 18:04:49
Merci pour vos réponses, malheureusement la structure de la base (et les tables qui vont avec) m'ont été données comme sa et je ne dois pas y toucher.
Juste exécuter 18 requêtes différentes dont celle-ci
j'essaierai vos requêtes un peu plus tard dans la soirée et je repasserai dire ce qu'il en est
Marsh Posté le 03-11-2017 à 19:10:25
A mon sens, les tables Periode, LocSemaine et Semaine ne devraient pas exister et dans Location, il faudrait ajouter les champs datefin (de la location) et nbPersonnes.
En fonction des dates de début et de fin de la location, c'est facile de calculer les n° de semaines et donc d'aller chercher dans la table Tarif le montant à payer.
Marsh Posté le 03-11-2017 à 00:27:59
Bonsoir,
J'ai un problème qui peut paraitre risible pour certains mais cela fait un moment que je n'ai pas pratiqué du SQL.
Donc voila dans ma base j'ai 3 tables :
- Clients (numClient / Prenom / nom /etc...)
- Location (numLocation / numeroclient[Cle etrangere] / datelocation / etc
- LocSemaine (numLocation[cle etrangere], numSemaine[cle etrangere]) Cette table me sert de jointure entre deux tables (Location et une table période qui ne necessite pas d'être citer pour ma requête).
Voici ce que j'aimerai faire :
Afficher pour chaque location: le numéro location, les nom et prénom du client et le nombre de semaines réservées.
Ce que j'ai fait :
Dans un premier temps facilement :
Qui me retourne bien les locations avec leurs clients (nom+prenom)
ensuite j'arrive a recuperer le nombre de semaine reserver pour une location donné avec cette requete :
Par contre je ne comprends pas comment je pourrais les associés pour avoir tout les résultats voulu d'un seul coup.
Cdlt