Подзапрос и объединения в разных таблицах с разными условиями - PullRequest
1 голос
/ 24 апреля 2019

Я пытаюсь получить результат из разных таблиц.Нужна помощь в написании запроса, я новичок в MySQL.

У меня есть 1 таблица tbl_opp_details , которая связывает ID's различных таблиц:

moduleId из tbl_module

relatedId содержит ID's, относящийся к перикулярному модулю из разных таблиц (tbl_account, tbl_contact, ...).enter image description here На изображении выше

moduleId "1" -> Account (tbl_account)

moduleId "2" -> Contact (tbl_contact)

Теперь я хочу отобразить всю информацию об учетных записях, контактах

moduleId "1" -> Account (tbl_account) relatedTo "1" -> pin_1

moduleId "1" -> Account (tbl_account) relatedTo "2" -> epr_2

tbl_account

enter image description here

tbl_contact enter image description here

tbl_call_a_log enter image description here

Нужен запроскоторая объединяет эти таблицы и дает результат.

Update-1: Мой запрос:

SELECT 
    callLog.oppCallLogId, 
    callLog.subject, 
    callLog.comments, 
    callLog.moduleId, 
    modules.moduleName, 
    callLog.relatedTo, 
    accounts.account, 
    callLog.createdBy, 
    callLog.createdDtm, 
    callLog.updatedBy, 
    callLog.updatedDtm 
FROM tbl_opp_call_log AS callLog 
INNER JOIN tbl_module AS modules ON modules.moduleId=callLog.moduleId 
INNER JOIN (
    SELECT accounts.account FROM tbl_account AS accounts INNER JOIN callLog.relatedTo=accounts.accountId WHERE callLog.moduleId=1)

Выдает ошибку

MySQL сказал: Документация

# 1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с '.accountId WHERE callLog.moduleId = 1) LIMIT 0, 25' в строке 16

Update-2:

SELECT
    callLog.oppCallLogId,
   callLog.subject,
   callLog.comments,
   callLog.moduleId,
   callLog.relatedTo,
   accountTbl.account,
   callLog.createdBy,
   callLog.createdDtm,
   callLog.updatedBy,
   callLog.updatedDtm
FROM tbl_opp_call_log AS callLog
INNER JOIN (
    SELECT accounts.account 
    FROM tbl_account AS accounts 
    INNER JOIN tbl_opp_call_log AS callLog ON callLog.relatedTo=accounts.accountId 
    WHERE callLog.moduleId=1 AND accounts.accountId=callLog.relatedTo) AS accountTbl
ORDER BY callLog.oppCallLogId ASC

Повторный вывод.

Любая помощь приветствуется, заранее спасибо.

...