J'ai trois tables (pour l'argument) individuelles, email et attribut. individual_Ref la clé étrangère qui lie l'individu à l'email et à l'attribut.Je ne comprends pas pourquoi ces deux requêtes donnent des résultats différents
Il n'est pas nécessaire qu'un individu donné soit représenté sur la table attributaire car il se peut qu'il n'ait jamais ajouté d'attribut et qu'il puisse apparaître plusieurs fois s'il possède plusieurs attributs.
Je veux obtenir une liste de références individuelles et le nombre d'un attribut particulier pour eux. Mais il faut effectuer une recherche par adresse e-mail car il est permis aux personnes de partager des adresses e-mail (ne me lancez pas) ...
Mon premier coup de couteau a été
select e.individual_ref, count(a.attr_Code_ref)
from email e left join attribute a on e.individual_Ref = a.individual_ref
where e.email_Address = '[email protected]'
and a.attr_code_Ref = 4119
group by e.individual_ref
à l'aide d'une jointure gauche pour assurer I obtenir un ref individuel de l'email s'il en existe un et s'assurer que j'obtiens un résultat s'il y a un ref individuel dans l'email mais pas dans l'attribut. Ou alors je pensais que puisque ce ne retourne aucune ligne, mais ...
select e.individual_ref,
(select count(a.attr_Code_ref) from attribute a where a.attr_code_Ref = 4119 and a.individual_ref = e.individual_ref)
from email e
where e.email_Address = '[email protected]'
group by e.individual_REf
renvoie une ligne avec un individual_Ref et un nombre de 0
Je ne suggère pas SQL est cassé plus que je crois comprendre .. alors je suppose que "quelle est ma confusion?" est la question.
+1 pour obtenir les gens à considérer l'effet de une clause WHERE en contexte avec le JOIN –
merci pour toutes les réponses! –