Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Pierrot Spécialiste


Inscrit le: 29 Juil 2003 Messages: 47 Localisation: BELGIQUE
|
Posté le: 23 Juil 2004 19:41 Sujet du message: Recherche de personnes sans conjoint |
|
|
Bonjour,
Qui pourrait me donner le code SQL pour retrouver par le BOA la liste des personnes sans conjoint
Merci d'avance
Pierrot |
|
Revenir en haut |
|
 |
Lau Pro, Modérateur


Inscrit le: 01 Avr 2003 Messages: 1541
|
Posté le: 27 Juil 2004 09:48 Sujet du message: |
|
|
Je n'ai pas le BOA devant les yeux, mais la requête doit être du genre :
Code: | select * from individu a
where a.cle_dossier=1
and not exists (
select * from t_union b
where b.cle_dossier=a.cle_dossier
and (b.cle_pere = a.cle_fiche or b.cle_mere=a.cle_fiche)
) |
Les noms sont approximatifs (de mémoire) : vérifier dans les listes déroulantes. Le n° de dossier est bien entendu à remplacer par le dossier sur lequel tu travailles (cf. titre de la fenêtre du BOA).
Merci de reporter dans ce fil la requête définitive après test (pour les suivants) |
|
Revenir en haut |
|
 |
pthierry Pro

Inscrit le: 27 Fév 2003 Messages: 455 Localisation: Paris 13
|
Posté le: 27 Juil 2004 13:02 Sujet du message: |
|
|
Je verrais quelquechose comme ça car dans la table T_UNION , il y a pour les clés deux colonnes une colonne union_mari et une union_femme
SELECT DISTINCT INDIVIDU.NOM,
INDIVIDU.PRENOM,
INDIVIDU.CLE_FICHE AS NIP,
INDIVIDU.DATE_NAISSANCE,
INDIVIDU.DATE_DECES,
INDIVIDU.NUM_SOSA
FROM INDIVIDU
WHERE INDIVIDU.KLE_DOSSIER = 1
AND INDIVIDU.SEXE =1
AND INDIVIDU.CLE_FICHE NOT IN
(SELECT T_UNION.UNION_MARI
FROM T_UNION
WHERE INDIVIDU.CLE_FICHE = T_UNION.UNION_MARI
AND T_UNION.KLE_DOSSIER = 1)
UNION
SELECT DISTINCT INDIVIDU.NOM,
INDIVIDU.PRENOM,
INDIVIDU.CLE_FICHE AS NIP,
INDIVIDU.DATE_NAISSANCE,
INDIVIDU.DATE_DECES,
INDIVIDU.NUM_SOSA
FROM INDIVIDU
WHERE INDIVIDU.KLE_DOSSIER = 1
AND INDIVIDU.SEXE =2
AND INDIVIDU.CLE_FICHE NOT IN
(SELECT T_UNION.UNION_FEMME
FROM T_UNION
WHERE INDIVIDU.CLE_FICHE = T_UNION.UNION_FEMME
AND T_UNION.KLE_DOSSIER = 1) _________________ N'oubliez pas la fonction Rechercher...
Cordialement Pierre |
|
Revenir en haut |
|
 |
Lau Pro, Modérateur


Inscrit le: 01 Avr 2003 Messages: 1541
|
Posté le: 27 Juil 2004 14:10 Sujet du message: |
|
|
Ne crois-tu pas que la requête telle que je l'ai présentée est plus rapide à écrire et à exécuter (en remplaçant cle_pere par union_mari, ... : je ne me souvenais plus) :
Code: | select * from individu a
where a.kle_dossier=1
and not exists (
select * from t_union b
where b.kle_dossier=a.kle_dossier
and (b.union_mari = a.cle_fiche or b.union_femme=a.cle_fiche)
) |
Elle a de plus l'avantage de retourner aussi les personnes de sexe inconnu, et de pouvoir faire des tris si on le souhaite (car pas de clause union).
Qu'en penses-tu ? |
|
Revenir en haut |
|
 |
pthierry Pro

Inscrit le: 27 Fév 2003 Messages: 455 Localisation: Paris 13
|
Posté le: 27 Juil 2004 17:26 Sujet du message: |
|
|
Tu as raison Laurent , j'avais écrit cette requete comme toi sauf que j'avais oublié les parenthèses pour encadrer le "Or" , ce qui n'était pas bon , du coup j'ai essayé "l'union"
en rapidité d'exécution , c'est pareil et le tri se fait sur le nom et le prénom
comme ça l'utilisateur peut exécuter les 2 et comparer _________________ N'oubliez pas la fonction Rechercher...
Cordialement Pierre |
|
Revenir en haut |
|
 |
Pierrot Spécialiste


Inscrit le: 29 Juil 2003 Messages: 47 Localisation: BELGIQUE
|
Posté le: 28 Juil 2004 09:11 Sujet du message: |
|
|
Merci de vos réponses
Pierrot |
|
Revenir en haut |
|
 |
|