Je tableau mail
:Mysql comment compter les données de plusieurs tables avec plusieurs conditions
+---------+-----------+--------------+
| m_id | dns_id | mail_name |
+---------+-----------+--------------+
| 1| 5 | myac1 |
| 2| 5 | myac2 |
+---------+-----------+--------------+-
dns_id
est id du nom de domaine de la table dns
m_id
il est champ clé avec id email
mail_name
nom email
Tableau dns
+-----------+-----------+------------+
| dns_id | acc_id | dns|
+-----------+-----------+------------+
| 5 | 1 | test.com|
| 6 | 1 | test2.com|
+-----------+-----------+------------+
acc_id
id de mes comptes
dns
nom de mes domaines
Comment vous pouvez voir, j'ai deux domaines différents pour un seul compte. Champ dns_id
du tableau dns
lié à dns_id
à partir du tableau mail
. J'ai des comptes de messagerie pour dns_id
avec l'ID 5 et avec le nom test.com
. Mais je n'ai pas les comptes de messagerie pour test2.com
avec dns_id
6. je dois calculer le nombre de dns_id
pour acc_id
simple:
select count(dns_id) from dns where acc_id = 1;
Résultat:
+------------------+
| count(dns_id) |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)
Mais, si je veux faire compte uniquement pour les domaines ayant un compte de messagerie dans la table mail
. Comment faire ça? Je ne veux pas calculer les domaines, où je n'ai pas de compte de messagerie. Dans ce cas, je devrais avoir:
+------------------+
| count(dns_id) |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
Parce que mon dns_id
numéro 6 avec le domaine test2.com
ne dispose pas de compte de messagerie dans le tableau mail
.
Astuce: 'JOIN',' IN' ou 'EXISTS'. –
J'ai essayé, mais j'ai une erreur: 'ERREUR 1052 (23000): Colonne 'domain_id' dans la liste des champs est ambiguë – Piduna
Qualifiez vos colonnes, par exemple. 'dns.domain_id'. – jarlh