Petits soucis avec sql

Fermé
Leouargli Messages postés 1 Date d'inscription lundi 27 avril 2020 Statut Membre Dernière intervention 27 avril 2020 - Modifié le 28 avril 2020 à 09:30
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 28 avril 2020 à 09:36
Bonjour,
Voici mon problème :
J’ai une base mysql qui se nomme « meillant » composée de trois tables « deces, mariages, naissances ».
Tout d’abord, je veux connaitre le nombre de mariage.
SELECT count(*) FROM `mariages`  

Le résultat est 2724, c’est le nombre d’acte, sachant qu’il y a une ligne par acte dans cette table.

Dans la table mariages, je veux connaitre le nombre de patronymes différents des époux et des épouses.
Pour les époux, je passe la commande suivante :
 SELECT count(distinct `Nom_epoux`) FROM `mariages`      

Le résultat est 620 patronymes différents, OK

SELECT count(distinct `Nom_epouse`) FROM `mariages`   

Le résultat est 588 patronymes différents, OK

La somme des deux résultats est 1208, sachant qu’il y a des patronymes identiques chez les hommes et les femmes
Maintenant je veux connaitre les patronymes différents époux et épouses .
SELECT count(distinct `Nom_epoux`,`Nom_epouse` ) FROM `mariages`  

La le résultat est 1344, je ne comprends pas, dans tous les cas, il ne devrait pas être supérieur à 1208.

Mon select est certainement pas terrible, mais je ne vois pas comment faire.
Si quelqu’un pouvait me donner la solution, j’en serai ravi.
Merci d’avance

Message modifié
par la modération

--->
Pour une lecture plus facile du code, vous devez utiliser
les balises de code (en y précisant le langage)
A voir également:

1 réponse

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 28 avril 2020 à 09:36
Bonjour,

N'aurais tu pas plusieurs fois les mêmes couples enregistrés plusieurs fois ?

Peux tu ajouter un group by sur tes requêtes et voir si tu as des valeurs supérieur à 1 ?
SELECT Nom_epoux, count(`Nom_epoux`) 
FROM `mariages`
GROUP BY Nom_epoux


SELECT Nom_epouse, count(`Nom_epouse`) 
FROM `mariages`
GROUP BY Nom_epouse


SELECT CONCAT(`Nom_epoux`, ' - ', `Nom_epouse`) As COUPLE
               ,count(* ) 
FROM `mariages`
GROUP BY CONCAT(`Nom_epoux`, ' - ', `Nom_epouse`)


0