2017-02-11 3 views
1

У меня есть две таблицы таблица 1 и таблица 2 Таблица 2 содержит идентификатор таблицы 1MySql выбрать один из двух таблиц, если строка не существует во втором

Я хочу, чтобы показать все поля таблицы 1, с 2 колонками из таблицы 2, у которой есть идентификатор таблицы 1, и если таблица 2 не имеет записи для таблицы 1 (не имеет идентификатора таблицы 1), результатом будет содержимое таблицы 1 с двумя столбцами, которые будут пустыми этот запрос я использую

select * 
from tbl_marketing 
right join tbl_phonecall on tbl_marketing.db_maid=tbl_phonecall.db_mid 
where tbl_marketing.db_status!='Deal Done' and tbl_marketing.db_status!='Refused' and tbl_marketing.db_status!='Not Interested' order by tbl_marketing.db_date desc,tbl_phonecall.db_nextdate desc 

Но этот запрос не дают мне результаты, я хочу

если у меня нет информации в таблице 2 для строки в таблице 1, эта строка не будет отображаться в моем результате

Как я могу решить эту проблему?!

2017-02-10 12:46:01 vv ddd Answered 2017-01-01 00:00:00 2017-02-24 00:00:00 

это данные из первой таблицы:

2017-02-10 12:46:01 vv ddd Answered 

это данные из второй таблицы:

2017-01-01 00:00:00 2017-02-24 00:00:00 

если вторая таблица не имеют данных для Фристой таблицы данных в первые не появляются, если не отображаются, как указано выше Я хочу, если во второй таблице у меня нет данных для первой таблицы, результат будет таким, как

2017-02-10 12:46:01 vv ddd Answered 

, что последние 2 колонки пустым tbl_marketing enter image description here

tbl_phonecall enter image description here

результат будет все поле в tbl_marketing без повторения, если в tbl_phonecall два ряда или более, и если я не 't имеет строки в tbl_phonecall для поля в tbl_marketing, который будет отображаться с пустым значением для db_due и db_nextdate

+1

Обеспечить некоторые данные таблицы выборки и ожидаемые результаты – Wanderer

+0

@Ullas пожалуйста, проверьте выше – Developer

ответ

0

Используйте левое соединение (я при условии, таблица 1 tbl_marketing) ..

 

    SELECT 
     tbl_marketing.* , tbl_phonecall.db_due, tbl_phonecall.db_nextdate 
    FROM 
     tbl_marketing 
     LEFT JOIN (SELECT db_mid, max(db_due) db_due, max(db_nextdate) db_nextdate FROM tbl_phonecall group by db_mid) tbl_phonecall 
     ON tbl_marketing.db_maid = tbl_phonecall.db_mid 
    WHERE tbl_marketing.db_status != 'Deal Done' 
     AND tbl_marketing.db_status != 'Refused' 
     AND tbl_marketing.db_status != 'Not Interested' 
    ORDER BY tbl_marketing.db_date DESC, 
     tbl_phonecall.db_nextdate DESC; 

+0

да таблицы 1 tbl_marketing – Developer

+0

, когда я сделать левое соединение я буду иметь повторяющиеся строки, потому что в tbl_phonecall возможно, у меня будет более 1 строки ссылки на tbl_marketing, что означает, что i id 25 в tbl_marketing имеет 2 строки в tbl_phonecall, результаты будут отображаться дважды – Developer

+0

В этом случае выше запрос должен работать ... если нет, поделитесь своей структурой таблицы .. – Rakesh