Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème SQL

5 réponses
Avatar
Jean-Marc
Salut à toutes et à tous.
Le SQL suivant (SQL de requête) me pose un petit problème :
Assez logiquement, ce SQL compte les NrPoint qui sont des "PP Arrière" et
des "PP graphique" et me sort tous les secteurs dont ne nombre de est
supérieur à 0.
Sauf que je voudrais les 0 aussi.
Savoir, dans chaque secteurs, combien de NrPoint j'ai.

Je sais que s'il n'y a rien c'est qu'il y en a 0, mais j'en ai besoin pour
passer ensuite dans une autre requête, et là, sans les 0, comment
"l'explique" à ma gentille petite machine ... ?

Merci de votre aide,
Jean-Marc

SELECT Sectorisation.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation ON PP.NrPoint = Sectorisation.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY Sectorisation.Secteur;

5 réponses

Avatar
Sylvain Lafontaine
Plusieurs possibilités, dont utiliser un Left Join ou une clause Union (ou
les deux); cependant, votre description du problème est insuffisante pour en
dire plus.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:GJZhg.24942$
Salut à toutes et à tous.
Le SQL suivant (SQL de requête) me pose un petit problème :
Assez logiquement, ce SQL compte les NrPoint qui sont des "PP Arrière" et
des "PP graphique" et me sort tous les secteurs dont ne nombre de est
supérieur à 0.
Sauf que je voudrais les 0 aussi.
Savoir, dans chaque secteurs, combien de NrPoint j'ai.

Je sais que s'il n'y a rien c'est qu'il y en a 0, mais j'en ai besoin pour
passer ensuite dans une autre requête, et là, sans les 0, comment
"l'explique" à ma gentille petite machine ... ?

Merci de votre aide,
Jean-Marc

SELECT Sectorisation.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation ON PP.NrPoint = Sectorisation.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY Sectorisation.Secteur;




Avatar
Jean-Marc
Bonjour et merci de votre réponse.
De quoi auriez-vous besoin comme info pour pouvoir m'aider ?
La bdd (loin d'être achevée et me posant différents problèmes) pèse
actuellement 288Kb.
La Bdd complète vous aiderait-elle plus ?

Merci de votre aide,
Jean-Marc

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: %
Plusieurs possibilités, dont utiliser un Left Join ou une clause Union (ou
les deux); cependant, votre description du problème est insuffisante pour
en dire plus.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:GJZhg.24942$
Salut à toutes et à tous.
Le SQL suivant (SQL de requête) me pose un petit problème :
Assez logiquement, ce SQL compte les NrPoint qui sont des "PP Arrière" et
des "PP graphique" et me sort tous les secteurs dont ne nombre de est
supérieur à 0.
Sauf que je voudrais les 0 aussi.
Savoir, dans chaque secteurs, combien de NrPoint j'ai.

Je sais que s'il n'y a rien c'est qu'il y en a 0, mais j'en ai besoin
pour passer ensuite dans une autre requête, et là, sans les 0, comment
"l'explique" à ma gentille petite machine ... ?

Merci de votre aide,
Jean-Marc

SELECT Sectorisation.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation ON PP.NrPoint = Sectorisation.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY Sectorisation.Secteur;








Avatar
Sylvain Lafontaine
Vous ne dites tout simplement pas comment vous faites pour savoir que c'est
zéro. Est-ce que les "PP Devant" ou les "PP Non-Graphiques" sont des 0?
Est-ce qu'il n'y a pas de secteur associés quand c'est 0? Etc., etc.

Lorsque vous ne savez pas comment quérir vos données, vous devez donner des
exemples de datas et indiquer comment ils doivent être interprétés.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:W2gig.24096$
Bonjour et merci de votre réponse.
De quoi auriez-vous besoin comme info pour pouvoir m'aider ?
La bdd (loin d'être achevée et me posant différents problèmes) pèse
actuellement 288Kb.
La Bdd complète vous aiderait-elle plus ?

Merci de votre aide,
Jean-Marc

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: %
Plusieurs possibilités, dont utiliser un Left Join ou une clause Union
(ou les deux); cependant, votre description du problème est insuffisante
pour en dire plus.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:GJZhg.24942$
Salut à toutes et à tous.
Le SQL suivant (SQL de requête) me pose un petit problème :
Assez logiquement, ce SQL compte les NrPoint qui sont des "PP Arrière"
et des "PP graphique" et me sort tous les secteurs dont ne nombre de est
supérieur à 0.
Sauf que je voudrais les 0 aussi.
Savoir, dans chaque secteurs, combien de NrPoint j'ai.

Je sais que s'il n'y a rien c'est qu'il y en a 0, mais j'en ai besoin
pour passer ensuite dans une autre requête, et là, sans les 0, comment
"l'explique" à ma gentille petite machine ... ?

Merci de votre aide,
Jean-Marc

SELECT Sectorisation.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation ON PP.NrPoint = Sectorisation.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY Sectorisation.Secteur;












Avatar
Jean-Marc
Bonjour Sylvain,

Désolé de ne pas avoir pu m'expier de manière compréhensible.
Je vais essayer d'être plus clair.

J'ai 3 tables : Table PP contenant, entre autre, NrPoint (Clé primaire,
Entier Long), PPAr (Oui/Non cas à cocher) et PPGraph (Oui/Non cas à cocher)
Table Secteurs contenant, entre autre, NrSecteur (Clé
primaire, Entier Long), NbrLots (Entier Long) et Rue (Oui/Non case à
cocher)
Table Sectorisation, qui est une table intermédiaire
pour le lien plusieurs à plusieurs entre les 2 autres tables. Contient
NrPoint (Entier long indexé avec doublons) et Secteur (Entier Long indexé
avec doublons)

Pourquoi le lien plusieurs à plusieurs : Des secteurs géographiques (les
secteurs) contiennent des lots (des terrains). Dans les secteurs se trouvent
des points de positionnement (les points). Les points sont donc dans des
secteurs, mais les points se trouvant à la frontière de 2 (ou plusieurs)
secteurs sont donc dans 2 (ou plusieurs) secteurs.

raison de PPGraph : Les points ont été définis précédemment au dessins, ils
sont donc aussi dans la table Points. Seuls les points repris au dessin
doivent compter, d'où la case à cocher PPGraph.

PPAr : Certains points sont le long d'une rue, ce sont des PP avants. Ceux
qui ne se trouvent pas le long d'une rue sont des PP arrières, ou PPAr (case
à cocher).

NbrLots : Le nombre de lots que contient le secteur.

Rue : Des rues (ou portions de rues) forment aussi des secteurs. Si le
secteur fait partie d'une rue, Rue est coché. Dans ce cas, les recherches à
faire plus loin ne sont pas à réaliser parce que les rues sont exemptes de
validation de points. PS : Un secteur contient une rue (ou portion) de rue
OU des lots, mais jamais les 2.

Les relations :
Relation 1 à plusieurs avec intégrité complète entre [PP]![NrPoint] et
[Sectorisation]![NrPoint]
Relation 1 à plusieurs avec intégrité complète entre [Secteurs]![NrSecteur]
et [Sectorisation]![NrSecteur]

Les formulaires :
Un formulaire PP reprend toutes les infos de chaque point, ainsi qu'un sous
formulaire permettant de saisir dans quel(s) secteur(s) se trouve(nt) le
point.
Un formulaire Secteur reprend toutes les infos du secteur, ainsi qu'un sous
formulaire permettant de saisir quel(s) point(s) se trouve(nt) dans le
secteur.

But :
Émettre un état reprenant tous les secteurs non rue selon les conditions
suivantes :
1. moins de 1 point qui soit aussi PPGraph pour 3 lots.
2. moins de 20% de PPAr par rapport au nombre de PPGraph dans le secteur.

Requêtes :
Requête NbrPP par Secteur :
Tables PP et Sectorisation
Champs Secteur NrPoint PPGraph
Table Sectorisation Sectorisation PP
Opération Regroupement Compte Où
Tri
Afficher V V
Critère Oui

Requête NbrPPAr par Secteur :
Tables PP et Sectorisation
Champs Secteur NrPoint PPGraph PPAr
Table Sectorisation Sectorisation PP PP
Opération Regroupement Compte Où Où
Tri
Afficher V V
Critère Oui
Oui

Recherche :
Grâce à ces requêtes, j'ai le Nombre de PPGraph dans chaque secteur et le
Nombre de PPAr dans chaque secteur.
Je dois maintenant créer une requête qui va vérifier si le secteur est rue
ou pas (simple), si le Nombre de PP du secteur est plus grand que le Nombre
de lots du secteur * 3 et si le Nombre de PPAr du secteur est plus petite
que le Nombre de PP du secteur /5.
Quelle est cette requête, sachant que si un secteur ne contient que des
points avants (donc PPAr coché), le secteur n'apparaît pas dans la "Requête
NbrPPAr par secteur" ?

Merci de votre aide,
Jean-Marc

PS : La bdd, en version actuelle pèse 280Kb et contient des données d'essai.
Si vous pensez qu'elle vous aiderait, je peux vous l'envoyer.


"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Vous ne dites tout simplement pas comment vous faites pour savoir que
c'est zéro. Est-ce que les "PP Devant" ou les "PP Non-Graphiques" sont
des 0? Est-ce qu'il n'y a pas de secteur associés quand c'est 0? Etc.,
etc.

Lorsque vous ne savez pas comment quérir vos données, vous devez donner
des exemples de datas et indiquer comment ils doivent être interprétés.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:W2gig.24096$
Bonjour et merci de votre réponse.
De quoi auriez-vous besoin comme info pour pouvoir m'aider ?
La bdd (loin d'être achevée et me posant différents problèmes) pèse
actuellement 288Kb.
La Bdd complète vous aiderait-elle plus ?

Merci de votre aide,
Jean-Marc

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: %
Plusieurs possibilités, dont utiliser un Left Join ou une clause Union
(ou les deux); cependant, votre description du problème est insuffisante
pour en dire plus.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:GJZhg.24942$
Salut à toutes et à tous.
Le SQL suivant (SQL de requête) me pose un petit problème :
Assez logiquement, ce SQL compte les NrPoint qui sont des "PP Arrière"
et des "PP graphique" et me sort tous les secteurs dont ne nombre de
est supérieur à 0.
Sauf que je voudrais les 0 aussi.
Savoir, dans chaque secteurs, combien de NrPoint j'ai.

Je sais que s'il n'y a rien c'est qu'il y en a 0, mais j'en ai besoin
pour passer ensuite dans une autre requête, et là, sans les 0, comment
"l'explique" à ma gentille petite machine ... ?

Merci de votre aide,
Jean-Marc

SELECT Sectorisation.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation ON PP.NrPoint = Sectorisation.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY Sectorisation.Secteur;
















Avatar
Sylvain Lafontaine
D'après « Quelle est cette requête, sachant que si un secteur ne contient
que des points avants (donc PPAr coché), le secteur n'apparaît pas dans la
"Requête NbrPPAr par secteur" », je dirais deux possibilités:

SELECT S.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation as S ON PP.NrPoint = S.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY S.Secteur

Union S.Secteur, 0
From Sectorisation as S
Where Not Exists (
Select * From PP Where PP.NrPoint = S.NrPoint and (((PP.[PP
Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
)


Ou encore utiliser un Right Join:

SELECT S.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP RIGHT JOIN Sectorisation as S ON (PP.NrPoint = S.NrPoint and
(((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes)) )
GROUP BY S.Secteur

Dans le cas de l'Union, vous ne pourrez pas utiliser le mode de query
graphique d'Access et vous devrez passer en mode texte pour écrire votre
chaîne SQL. Pour la version avec le Right Join, je ne sais pas. Comme la
valeur de PP.NrPoint sera nulle dans certains cas, je ne sais pas trop ce
que vas donner Count (PP.NrPoint): peut-être une valeur nulle ou peut-être
zéro. Avec SQL-Server, j'utiliserais IsNull() mais avec Access, je ne me
souviens plus de la fonction à utiliser.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:w%djg.45828$
Bonjour Sylvain,

Désolé de ne pas avoir pu m'expier de manière compréhensible.
Je vais essayer d'être plus clair.

J'ai 3 tables : Table PP contenant, entre autre, NrPoint (Clé primaire,
Entier Long), PPAr (Oui/Non cas à cocher) et PPGraph (Oui/Non cas à
cocher)
Table Secteurs contenant, entre autre, NrSecteur (Clé
primaire, Entier Long), NbrLots (Entier Long) et Rue (Oui/Non case à
cocher)
Table Sectorisation, qui est une table intermédiaire
pour le lien plusieurs à plusieurs entre les 2 autres tables. Contient
NrPoint (Entier long indexé avec doublons) et Secteur (Entier Long indexé
avec doublons)

Pourquoi le lien plusieurs à plusieurs : Des secteurs géographiques (les
secteurs) contiennent des lots (des terrains). Dans les secteurs se
trouvent des points de positionnement (les points). Les points sont donc
dans des secteurs, mais les points se trouvant à la frontière de 2 (ou
plusieurs) secteurs sont donc dans 2 (ou plusieurs) secteurs.

raison de PPGraph : Les points ont été définis précédemment au dessins,
ils sont donc aussi dans la table Points. Seuls les points repris au
dessin doivent compter, d'où la case à cocher PPGraph.

PPAr : Certains points sont le long d'une rue, ce sont des PP avants. Ceux
qui ne se trouvent pas le long d'une rue sont des PP arrières, ou PPAr
(case à cocher).

NbrLots : Le nombre de lots que contient le secteur.

Rue : Des rues (ou portions de rues) forment aussi des secteurs. Si le
secteur fait partie d'une rue, Rue est coché. Dans ce cas, les recherches
à faire plus loin ne sont pas à réaliser parce que les rues sont exemptes
de validation de points. PS : Un secteur contient une rue (ou portion) de
rue OU des lots, mais jamais les 2.

Les relations :
Relation 1 à plusieurs avec intégrité complète entre [PP]![NrPoint] et
[Sectorisation]![NrPoint]
Relation 1 à plusieurs avec intégrité complète entre
[Secteurs]![NrSecteur] et [Sectorisation]![NrSecteur]

Les formulaires :
Un formulaire PP reprend toutes les infos de chaque point, ainsi qu'un
sous formulaire permettant de saisir dans quel(s) secteur(s) se trouve(nt)
le point.
Un formulaire Secteur reprend toutes les infos du secteur, ainsi qu'un
sous formulaire permettant de saisir quel(s) point(s) se trouve(nt) dans
le secteur.

But :
Émettre un état reprenant tous les secteurs non rue selon les conditions
suivantes :
1. moins de 1 point qui soit aussi PPGraph pour 3 lots.
2. moins de 20% de PPAr par rapport au nombre de PPGraph dans le secteur.

Requêtes :
Requête NbrPP par Secteur :
Tables PP et Sectorisation
Champs Secteur NrPoint PPGraph
Table Sectorisation Sectorisation PP
Opération Regroupement Compte Où
Tri
Afficher V V
Critère Oui

Requête NbrPPAr par Secteur :
Tables PP et Sectorisation
Champs Secteur NrPoint PPGraph PPAr
Table Sectorisation Sectorisation PP PP
Opération Regroupement Compte Où Où
Tri
Afficher V V
Critère Oui Oui

Recherche :
Grâce à ces requêtes, j'ai le Nombre de PPGraph dans chaque secteur et le
Nombre de PPAr dans chaque secteur.
Je dois maintenant créer une requête qui va vérifier si le secteur est rue
ou pas (simple), si le Nombre de PP du secteur est plus grand que le
Nombre de lots du secteur * 3 et si le Nombre de PPAr du secteur est plus
petite que le Nombre de PP du secteur /5.
Quelle est cette requête, sachant que si un secteur ne contient que des
points avants (donc PPAr coché), le secteur n'apparaît pas dans la
"Requête NbrPPAr par secteur" ?

Merci de votre aide,
Jean-Marc

PS : La bdd, en version actuelle pèse 280Kb et contient des données
d'essai. Si vous pensez qu'elle vous aiderait, je peux vous l'envoyer.


"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Vous ne dites tout simplement pas comment vous faites pour savoir que
c'est zéro. Est-ce que les "PP Devant" ou les "PP Non-Graphiques" sont
des 0? Est-ce qu'il n'y a pas de secteur associés quand c'est 0? Etc.,
etc.

Lorsque vous ne savez pas comment quérir vos données, vous devez donner
des exemples de datas et indiquer comment ils doivent être interprétés.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:W2gig.24096$
Bonjour et merci de votre réponse.
De quoi auriez-vous besoin comme info pour pouvoir m'aider ?
La bdd (loin d'être achevée et me posant différents problèmes) pèse
actuellement 288Kb.
La Bdd complète vous aiderait-elle plus ?

Merci de votre aide,
Jean-Marc

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
a écrit dans le message de news:
%
Plusieurs possibilités, dont utiliser un Left Join ou une clause Union
(ou les deux); cependant, votre description du problème est
insuffisante pour en dire plus.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Jean-Marc" wrote in message
news:GJZhg.24942$
Salut à toutes et à tous.
Le SQL suivant (SQL de requête) me pose un petit problème :
Assez logiquement, ce SQL compte les NrPoint qui sont des "PP Arrière"
et des "PP graphique" et me sort tous les secteurs dont ne nombre de
est supérieur à 0.
Sauf que je voudrais les 0 aussi.
Savoir, dans chaque secteurs, combien de NrPoint j'ai.

Je sais que s'il n'y a rien c'est qu'il y en a 0, mais j'en ai besoin
pour passer ensuite dans une autre requête, et là, sans les 0, comment
"l'explique" à ma gentille petite machine ... ?

Merci de votre aide,
Jean-Marc

SELECT Sectorisation.Secteur, Count(PP.NrPoint) AS CompteDeNrPoint
FROM PP INNER JOIN Sectorisation ON PP.NrPoint = Sectorisation.NrPoint
WHERE (((PP.[PP Arrière])=Yes) AND ((PP.[PP graphique])=Yes))
GROUP BY Sectorisation.Secteur;