2014-09-23 2 views
0

У меня есть эта таблицаОбъединить две таблицы и показать другой столбец на MySQL

стол "назначить" -> npwp, кпп, кабина, nip_ar, KLU -> имеет 31.023 данные

и

стол «masterfile» -> npwp, kpp, cab, jenis, nama, kota -> имеет 33.631 данные

Я хочу присоединиться к этим двум таблицам, чтобы я мог получить npwp, kpp, cab, jenis, nama , kota, nip_ar, klu

Когда я использую LEFT ПРИСОЕДИНИТЕСЬ, он обрабатывается так долго. Но когда я использую UNION ALL, он не работает так, как я хочу.

это мой UNION ALL запрос:

ВЫБРАТЬ npwp, кпп, NULL в качестве автора, кабины, nip_ar, KLU ОТ Назначают GROUP BY npwp, кпп, кабина UNION ALL SELECT, npwp, кпп, кабина, Женис, nama, kota FROM masterfile GROUP BY npwp, kpp, cab;

Я просто получаю колонку npwp, kpp, author, cab, nip_ar, klu. но столбцы jenis, nama, kota не показаны.

и это мой LEFT JOIN запрос:

ВЫБРАТЬ masterfile.npwp, masterfile.kpp, masterfile.cab, masterfile.name, masterfile.address, assign.nip_ar, assign.klu ИЗ MasterFILE LEFT JOIN назначить ON assign.npwp = masterfile.npwp И assign.kpp = masterfile.kpp И assign.cab = masterfile.cab;

Я новичок по запросу, пожалуйста, помогите мне исправить эту проблему. большое спасибо.

+1

Не видите ничего плохого в вашей 'OUTER JOIN' - есть ли у вас индексы на присоединенных столбцах? Использование 'UNION' полностью отличается от использования' JOINs', зависит от ваших желаемых результатов. – sgeddes

+0

да, вы правы sgeddes, просто добавьте индекс на него, большое вам спасибо за советы – DymasSedhayu

ответ

0

Спасибо всем, я получаю ответ от моего друга на партийном чате,

, что мой присоединиться запрос хорош, просто должно быть добавить INDEX в колонке NPWP, КРР, CAB как на стол MasterFILE и назначить так запрос может обрабатываться быстрее.

ВЫБОР masterfile.npwp, masterfile.kpp, masterfile.cab, masterfile.name, masterfile.address, assign.nip_ar, assign.klu ОТ MasterFILE LEFT JOIN назначить ПО assign.npwp = masterfile.npwp и назначить. kpp = masterfile.kpp И assign.cab = masterfile.cab;

Смежные вопросы