Я немного поменяю ваш запрос, начиная с вашего последнего предложения WHERE, основываясь на каком-то статусе. Так как таблица Comissionario ГДЕ «Обязательна» в статусе, я переместил ее во вторую позицию запроса. Затем вернули остальные таблицы обратно к таблице фатуры.
select
f.valor valor_fatura,
f.numero numero,
f.id_cliente,
des.nome despachante,
v.nome vendedor,
tipo.tipo tipo_commisionado,
u.unidade unidade_cobranca,
com.valor_comissao taxa,
if( u.unidade = 'moeda',
com.valor_comissao,
FORMAT(( ( com.valor_comissao * f.valor ) / 100 ), 2 )
) valor_comissao,
f.created_at,
f.updated_at,
f.created_by,
f.updated_by
from
-- start with all commisionario status (alias cs)
ComissionarioStatus cs
-- now on to comissionario (alias com) that match key status
JOIN comissionario com
on cs.id_comissionariostatus = com.id_comissionariostatus
-- now the tipo and unicob with shorter alias
left join ComissionarioTipo tipo
on com.id_comissionariotipo = tipo.id_comissionariotipo
left join Unicob u
on com.id_unicob = u.id_unicob
-- now getting the individual
join Individuo des
on com.id_comissionado = des.id_individuo
join captacao cap
on des.id_individuo = cap.id_despachante
left join proposta p
on cap.id_proposta = p.id_proposta
left join Individuo v
on p.id_vendedor = v.id_individuo
join fatura f
on cap.id_captacao = f.id_captacao
where
-- where the one status you want
cs.status = 'ativo'
Это было только первое начало, но если вы посмотрите на свой запрос, вы попытаетесь найти записи Fatura, связанные с записями Comissionario, поэтому чтобы получить каждый из них, вам нужен обычный JOIN для объединения записей.
Кроме того, если вы посмотрите на уровень отступа таблиц, вы увидите, как я переходил от одной таблицы к другой и как Ключ ID из левой таблицы (первая таблица) совпадает с идентификатором из правой таблицы (вторая таблица присоединяется к TO). Я полагаю, увидев, как A -> B -> C, вы сначала гарантируете отношения между таблицами. Необязательно будет левый присоединиться, как вы изначально имели на некоторых. Но так как ваше предложение where было основано на указанном c статусе, это заставляет любого левого соединения попасть в таблицу comissionario в JOIN. Итак, теперь, чтобы перейти от этого к фатуре, каждое последующее связанное также должно быть объединением с левым соединением.
Теперь, после всего сказанного, давайте попробуем уточнить, что вы ищете в конечном результате. , Ваша диаграмма показала много таблиц и связей, но сделайте шаг назад. Каковы ваши необходимые детали ... Что-то из таблицы Comissionario И таблицы Fatura? Если это так, предоставьте кратчайшую ссылку на таблицы взаимосвязей, которые переходят от одной к другой. Все это будут прямые условия СОЕДИНЕНИЯ. Начните свой запрос с этого. Как только вы получите ТО, решенное, теперь начните прикреплять другие элементы с левыми соединениями, где это применимо. Например, я бы добавил вашу таблицу ComissionarioStatus со следующим указанным статусом c.
Когда вы постепенно добавляете каждую дополнительную таблицу с помощью JOIN или LEFT JOIN, выясните, какая из них нарушает ожидаемый набор результатов, и спросите себя, почему ... Это должно быть LEFT JOIN? или нет.
с использованием более коротких, но несколько значимых псевдонимов к таблицам тоже могут помочь.