Рассмотрим три таблицы в следующей схеме: SQL Fiddle.MySQL - Получите количество пользователей, у которых есть «пользовательский контакт»
- Эта мини-модель представляет собой простой пример базы данных, над которой я работаю.
- Пользователей таблицы имеет 4 атрибутов, то user_id (первичный ключ AUTO_INCREMENT), в country_id, который является внешним ключом, ссылающийся на таблицустраны, user_msisdn который является телефонным номером пользователя и имя пользователя.
- В Контакты таблица имеет 3 атрибутов, то contact_id (первичный ключ auto_increment), в user_id, который является внешним ключом, ссылающийся на Пользователи таблицы, и contact_msisdn, который является телефоны пользовательского контакта (телефонные номера на вашем список контактов телефона).
- Соотношения между пользователями таблицы и Контактами таблицы много-ко-многим, пользователь может иметь много контактов, и контакты можно найти в списке контактов любого пользователя.
Требования:
Для каждой страны, получить количество пользователей, которые имеют по крайней мере один «пользовательский контакт», где «пользователь-контакт» является контакт, который является пользователем, и подсчет пользователей, у которых нет «контакта с пользователем».
Например, Для страны = 'Швеция' (country_id = 3), то user_id = 3 имеет два контакта в Контакты таблицы, которые считаются "пользователь-контакт" с (MSISDN = '+220011223344' & ' +224433221100'). Таким образом, результаты запроса, которые я хочу: в Швеции есть 1 пользователь (user_id = 3), в котором есть хотя бы один «пользовательский контакт» и нулевые пользователи, у которых нет «контакта с пользователем» и т. Д. Для каждой страны.
Результаты запроса говорят, что "Соединенные Штаты Америки" с country_id = 1 имеет (has_contact = 1 & no_contact = 1), на самом деле, он должен привести (has_contact = 0 и no_contact = 2), так как 3 контакта пользователя_id = 1 в таблице «Контакты» не являются пользователями одновременно. Итак, истинные результаты говорят о том, что контакт пользователя также должен быть пользователем. –
лучше называть подсчеты: has_contact_that_is_user & has_no_contact_that_is_user –
@ Mohammad-AliItani О, вы не очень хорошо объяснили свое самочувствие .. Исправлено, попробуйте сейчас – sagi