Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2248 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete SQL

n°2307232
Dolb66
Posté le 03-11-2017 à 00:27:59  profilanswer
 

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 :
 

Code :
  1. Select location.numLocation,client.nomClient, client.prenomClient
  2. FROM location NATURAL JOIN client
  3. WHERE client.numClient=location.Client_numClient;


 
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 :
 

Code :
  1. SELECT Location_numLocation, COUNT(*)
  2. FROM locsemaine
  3. GROUP BY Location_numLocation;


 
 
Par contre je ne comprends pas comment je pourrais les associés pour avoir tout les résultats voulu d'un seul coup.
 
Cdlt

mood
Publicité
Posté le 03-11-2017 à 00:27:59  profilanswer
 

n°2307246
rufo
Pas me confondre avec Lycos!
Posté le 03-11-2017 à 15:05:28  profilanswer
 

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 :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2307247
martinik_s​oul1
Posté le 03-11-2017 à 15:17:50  profilanswer
 

Dolb66 a écrit :

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 :
 

Code :
  1. Select location.numLocation,client.nomClient, client.prenomClient
  2. FROM location NATURAL JOIN client
  3. WHERE client.numClient=location.Client_numClient;


 
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 :
 

Code :
  1. SELECT Location_numLocation, COUNT(*)
  2. FROM locsemaine
  3. GROUP BY Location_numLocation;


 
 
Par contre je ne comprends pas comment je pourrais les associés pour avoir tout les résultats voulu d'un seul coup.
 
Cdlt


 
Salut,
Si je comprends bien, tu voudrais le nombre de jours de location pour un client donné ?


---------------
Allez l'OM !
n°2307248
rufo
Pas me confondre avec Lycos!
Posté le 03-11-2017 à 16:01:22  profilanswer
 

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 :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2307249
schumaker
Posté le 03-11-2017 à 16:01:40  profilanswer
 

Pas compris ou était le problème ? je répond peut-être à côté du coup :o
 
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;

n°2307250
rufo
Pas me confondre avec Lycos!
Posté le 03-11-2017 à 16:59:56  profilanswer
 

Grillé de 18s :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2307252
Dolb66
Posté le 03-11-2017 à 18:04:49  profilanswer
 

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
 
http://zupimages.net/up/17/44/ct2j.png
 
j'essaierai vos requêtes un peu plus tard dans la soirée et je repasserai dire ce qu'il en est  :hello:

n°2307254
rufo
Pas me confondre avec Lycos!
Posté le 03-11-2017 à 19:10:25  profilanswer
 

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL

 

Sujets relatifs
Lanceur de requête SQL pour gain de temps en recetteprocesseur + requete SQL
Habiller un tableau résultant d'une requête SQL[RESOLU]requete SQL
[microsoft query] étendre requête comme formule excelSQL Requete Union
[SQL] Question sur une requête[Excel] Création d'une requête SQL ?
Problème requête SQL: command not properly ended[SQL] Requete sur WSUS
Plus de sujets relatifs à : Requete SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR