forum Ancestrologie

Ancestrologie - Le Programme => Ancestrologie - Utilisation => Discussion démarrée par: emable le 29 Janvier 2023 à 12:11:48

Titre: QUi a une civilité?
Posté par: emable le 29 Janvier 2023 à 12:11:48
Bonjour,
J'ai trouvé cette requête qui compte les civiltés :
SELECT
  count(INDIVIDU.PREFIXE) AS Nbre,
  INDIVIDU.PREFIXE
FROM
  INDIVIDU
WHERE
  (INDIVIDU.KLE_DOSSIER = 17)
GROUP BY
  INDIVIDU.PREFIXE
 

est-il possible d'y ajouter les noms et NIP?
J'ai des civilité farfelues et aimerait y remédier
Merci de votre aide
J-François
Titre: QUi a une civilité?
Posté par: jfd le 30 Janvier 2023 à 09:16:45
Bonjour Emable

Voici une requête qui devrait apporter une réponse à la question :

SELECT
  count(INDIVIDU.PREFIXE) AS NBRE,
  INDIVIDU.NOM,
  INDIVIDU.PRENOM,
  INDIVIDU.CLE_FICHE,
  INDIVIDU.PREFIXE
FROM
  INDIVIDU
WHERE
  (INDIVIDU.KLE_DOSSIER = 6)
GROUP BY
  INDIVIDU.NOM,
  INDIVIDU.PRENOM,
  INDIVIDU.CLE_FICHE,
  INDIVIDU.PREFIXE
HAVING
  (COUNT(INDIVIDU.NOM) = COUNT(INDIVIDU.PREFIXE))
ORDER BY
  INDIVIDU.NOM

Changer 6 par votre numéro de dossier

Je l'ai testé dans le générateur de SQL d'Ancestrologie car cela permet (avec les flèche des entêtes) de restreindre les réponses.

Je vais avoir moi aussi du travail car je ne suis pas très cohérent dans l'orthographe de mes préfixes !!!

Cordialement
Titre: QUi a une civilité?
Posté par: DDdeBerdeux le 31 Janvier 2023 à 18:40:45
Bonsoir,

SELECT
  NOM,
  PRENOM,
  CLE_FICHE,
  PREFIXE
FROM
  INDIVIDU
WHERE
  KLE_DOSSIER=(select DLL_DOSSIER from GESTION_DLL) --=dossier si execution dans BOA
  and PREFIXE is not null
ORDER BY
  NOM,PRENOM

fonctionne aussi bien tout en étant bien plus simple.
Lorsqu'une seule table est interrogée dans une requête, il n'y a pas ambiguïté, les champs nommés appartiennent obligatoirement à la table. Il est donc inutile d'en préfixer le nom par le nom de la table ou un nom d'alias.

GROUP BY
  INDIVIDU.NOM,
  INDIVIDU.PRENOM,
  INDIVIDU.CLE_FICHE,
  INDIVIDU.PREFIXE
Dans ce groupe CLE_FICHE étant unique (chaque individu a une CLE_FICHE différente), count(INDIVIDU.PREFIXE) ne peut être que NULL (le champ est NULL) ou valoir 1. Si votre requête fonctionne, c'est parce que dans la clause
HAVING
  (COUNT(INDIVIDU.NOM) = COUNT(INDIVIDU.PREFIXE))
COUNT(INDIVIDU.NOM) a aussi toujours la valeur 1. Cette clause est donc équivalente à un WHERE PREFIXE is not null sur la table.
Lors de l'ouverture du BOA, le numéro du dossier en cours est inscrit dans la table GESTION_DLL. Le lire dans la requête en cours permet de ne pas avoir besoin de le saisir.

André
Titre: QUi a une civilité?
Posté par: jfd le 31 Janvier 2023 à 19:21:57
Bonsoir

Merci André

J'en apprends un peu chaque jour !

Cordialement
Titre: QUi a une civilité?
Posté par: emable le 03 Février 2023 à 08:00:38
Bonjour,
Merci pour cette requête, elle fonctionne très bien :)