MySQL INNER JOIN выбирает только одну строку из первой таблицы, если все лиды активны = 0 и primary_email = Да во второй таблице

У меня есть две таблицы. Я хочу объединить их таким образом, чтобы в таблице Leads была только одна запись, если в таблице Leads_Details все Lead_id активен = 0, а основной = Да.

Ведущий стол:

    -------------
    | id | name |
    -------------
    | 1  | abc1 |
    | 2  | abc2 |
    | 3  | abc3 |
    | 4  | abc4 |
    | 5  | abc5 |
    -------------

Таблица LeadsDetails:

    --------------------------------------
    | id | lead_id | active | primary_email
    --------------------------------------
    | 1  | 1       | 1       |Yes         |
    | 2  | 1       | 0       |NO          |
    | 3  | 2       | 0       |Yes         |
    | 4  | 3       | 1       |Yes         |
    | 5  | 4       | 0       |Yes         |
    | 6  | 5       | 1       |NO          |
    -------------------------------------

ожидаемый результат:

    --------------
    | id | name   |
    --------------
    | 1  | abc2   |
    | 2  | abc4   |
    --------------

SELECT `Lead`.`id`, `Lead`.`name`, `Lead`.`unsubscribe` 
FROM `leads` AS `Lead` inner JOIN `LeadsDetails` AS `LeadsDetails` 
ON (`LeadsDetails`.`lead_id` = `Lead`.`id`) 
WHERE `LeadsDetails`.`primary_email` = 'Yes' AND `LeadsDetails`.`active` = 0

person thecodedeveloper.com    schedule 05.10.2014    source источник
comment
Я хочу показать лид в случае, если primary_email = Yes и active = 0 для всех одинаковых lead_id   -  person thecodedeveloper.com    schedule 05.10.2014
comment
Я предполагаю, что вы хотите, чтобы, если в ожидаемом выводе для одного и того же идентификатора лида было записано более одного результата для вашего запроса, он должен возвращать только один идентификатор лида. бывший. для идентификатора лида 2 в таблице сведений о лидах есть 2 записи с активным = 0 и основным адресом электронной почты = да, тогда вместо возврата двух записей вам нужна только одна запись, я прав? Я спрашиваю об этом, потому что ваш вопрос мне не ясен.   -  person Tushar Bhaware    schedule 05.10.2014
comment
@TusharBhaware, вы правы, я получаю больше, чем один результат, я хочу показать только 1 лид в случае, если все одинаковые lead_id активны = 0, и если они должны быть primary_email = 'Да'   -  person thecodedeveloper.com    schedule 05.10.2014
comment
Является ли комбинация lead_id, active=0, primary_email='Yes' уникальной в таблице LeadsDeatils?   -  person Gervs    schedule 05.10.2014


Ответы (1)


Вам нужна группа по атрибуту

 SELECT `Lead`.`id`, `Lead`.`name`, `Lead`.`unsubscribe` 
FROM `leads` AS `Lead` inner JOIN `LeadsDetails` AS `LeadsDetails` 
ON (`LeadsDetails`.`lead_id` = `Lead`.`id`) 
WHERE `LeadsDetails`.`primary_email` = 'Yes' AND `LeadsDetails`.`active` = 0
GROUP BY lead.id
person Tushar Bhaware    schedule 05.10.2014