par
sadeq » 14 mars 2005, 10:53
Cette requête est mal construite.
En effet, si la source est la même (commande) et les jointures aussi
....FROM commande AS C1 INNER JOIN commande AS C2 ON C1.id_client = C2.id_client WHERE C2.id_client IS NULL ...
l'id_client est vollu nul quelle que soit sa source (c1 ou c2) du coup on n'a pas besoin de créer deux vues (qui sont les mêmes d'ailleurs) de la table commande => une source des deux suffit.
Simplification : la requête suivante suffit pour compter les nouveaux clients
Code : Tout sélectionner
SELECT COUNT(id_client) AS nouveaux_client
FROM commande
WHERE id_client IS NULL
A condition que "id_client" qui est une clé étrangère (venue de la table CLIENT) autorise les nuls et n'est pas lié par une relation d'intégrité référentielle dans la table COMMANDE.
Maintenant, la deuxième partie de la requête filtre les commandes par date :
....AND C2.date_cde < '".$date1."' AND C1.date_cde >= '".$date1."' AND C1.date_cde <= '".$date2."'
Selon, ce qui est avancé plus haut, cette condition peut être alors simplifiée par :
Code : Tout sélectionner
.... AND date_cde >= '".$date1."' AND date_cde <= '".$date2."'
Ce qui donne la requête finale :
Code : Tout sélectionner
SELECT COUNT(id_client) AS nouveaux_client
FROM commande
WHERE id_client IS NULL
AND date_cde >= '".$date1."' AND date_cde <= '".$date2."'
Qui affiche
le nombre de nouveaux clients ayant commandés entre deux dates données.
La même requête peut être écrite :
Code : Tout sélectionner
SELECT COUNT(id_client) AS nouveaux_client
FROM commande
WHERE id_client IS NULL
AND date_cde BETWEEN '".$date1."' AND '".$date2."'
Cette requête est mal construite.
En effet, si la source est la même (commande) et les jointures aussi
[quote]
....FROM commande AS C1 INNER JOIN commande AS C2 ON C1.id_client = C2.id_client WHERE C2.id_client IS NULL ...
[/quote]
l'id_client est vollu nul quelle que soit sa source (c1 ou c2) du coup on n'a pas besoin de créer deux vues (qui sont les mêmes d'ailleurs) de la table commande => une source des deux suffit.
Simplification : la requête suivante suffit pour compter les nouveaux clients
[code]SELECT COUNT(id_client) AS nouveaux_client
FROM commande
WHERE id_client IS NULL[/code]
A condition que "id_client" qui est une clé étrangère (venue de la table CLIENT) autorise les nuls et n'est pas lié par une relation d'intégrité référentielle dans la table COMMANDE.
Maintenant, la deuxième partie de la requête filtre les commandes par date :
[quote]
....AND C2.date_cde < '".$date1."' AND C1.date_cde >= '".$date1."' AND C1.date_cde <= '".$date2."'
[/quote]
Selon, ce qui est avancé plus haut, cette condition peut être alors simplifiée par :
[code].... AND date_cde >= '".$date1."' AND date_cde <= '".$date2."' [/code]
Ce qui donne la requête finale :
[code]
SELECT COUNT(id_client) AS nouveaux_client
FROM commande
WHERE id_client IS NULL
AND date_cde >= '".$date1."' AND date_cde <= '".$date2."'[/code]
Qui affiche [u]le nombre [/u] de nouveaux clients ayant commandés entre deux dates données.
La même requête peut être écrite :
[code]
SELECT COUNT(id_client) AS nouveaux_client
FROM commande
WHERE id_client IS NULL
AND date_cde BETWEEN '".$date1."' AND '".$date2."'
[/code]