Bonjour,
Je souhaiterais créer une requête SQL afin de pouvoir afficher la liste des clients et en même temps afficher le nombre de factures de ce client.
J'ai 3 tables:
1. CLIENTS
----------
id
nomclient
adresse1_fact
....
2. PROJETS
----------
id
numprojet
id_client (Est la liaison vers le id de la table CLIENTS)
....
3. PROJETS_FACTURES
-----------------------
id
id_projet (Est la liaison vers le id de la table PROJETS)
designation_facture
montant
remarque_facture
date_encodage
date_facturation
date_paiement_client
Donc, je souhaite lister tous les clients de la base CLIENTS et à côté de chaque client indiquer le nombre de factures de ce client.
Je sais faire cela sans problème en listant par projet, mais j'ai des difficulté en partant de la liste des clients.
Voici ce que cela donne par PROJETS
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 $requete = "SELECT p.id, p.numprojet, p.description, p.id_client, p.datecreation, p.actif, p.actif_ouvrier, p.rem_obligatoire, p.delai, c.nomclient, p.repertoire, p.date_envoi, p.a_facturer, p.cloturer, pp.nbpointagepourceprojet, ppo.nbpointageouvrierpourceprojet, ppf.nbfactureouverte, ppfi.nbfactureimpayee, ppff.nbfacture FROM $table_projets as p LEFT JOIN $table_clients as c ON c.id = p.id_client LEFT JOIN ( SELECT id_projet, COUNT(*) as nbpointagepourceprojet FROM $table_pointage_projet GROUP BY id_projet ) as pp ON pp.id_projet=p.id LEFT JOIN ( SELECT id_projet, COUNT(*) as nbpointageouvrierpourceprojet FROM $table_pointage_projet_ouvrier GROUP BY id_projet ) as ppo ON ppo.id_projet=p.id LEFT JOIN ( SELECT id_projet, date_facturation, COUNT(*) as nbfactureouverte FROM $table_projets_factures WHERE date_facturation='0' GROUP BY id_projet ) as ppf ON ppf.id_projet=p.id LEFT JOIN ( SELECT id_projet, COUNT(*) as nbfactureimpayee FROM $table_projets_factures WHERE date_paiement_client='0' and date_facturation<>'0' GROUP BY id_projet ) as ppfi ON ppfi.id_projet=p.id LEFT JOIN ( SELECT id_projet, date_facturation, COUNT(*) as nbfacture FROM $table_projets_factures GROUP BY id_projet ) as ppff ON ppff.id_projet=p.id ";
Maintenant, en partant de la base CLIENTS, j'ai essayé ceci, mais ça ne fonctionne pas:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 $requete = "SELECT c.id, nomclient, adresse1_fact, adresse2_fact, cp_fact, ville_fact, pays_fact, code_pays_fact, adresse1_liv, adresse2_liv, cp_liv, ville_liv, pays_liv, code_pays_liv, phone, fax, mail, web, p.idprojet, p.nbfactureouverte FROM $table_clients as c LEFT JOIN ( SELECT id as idprojet, id_client, ppf.nbfactureouverte as nbfactureouverte FROM $table_projets as p LEFT JOIN ( SELECT id_projet, date_facturation, COUNT(*) as nbfactureouverte FROM $table_projets_factures as ppf WHERE date_facturation='0' GROUP BY id_projet ) as ppf ON ppf.id_projet=p.id ) as p ON p.id_client=c.id GROUP BY id_client ";
Je suis débutant en requêtes SQL et je ne sais même pas si c'est possible de faire une jointure dans une autre jointure.
Pouvez-vous m'aider ?
Merci
Steph
Partager