I am trying to set up a query (MYSQL) to return all the clients that a particular vendor can view. The rules for showing the list of customers for this seller are: - Clients with overdue contracts or without contracts. - Customers with bids or no proposals. - Clients with current contracts or proposals still valid as long as these have been created by the vendor conducting the consultation.
In short: I can only show customers available for this seller.
My scenario in the database is:
Icameupwiththefollowingquerybutitisreturningduplicateclients.Theproblemisthatacustomermayhavebeenservedbymorethanonevendor,thatis,anunsuccessfulbidfromseller1andavalidcontractfromseller2,inthiscaseifseller2doesthesearch,thatcustomerappearstwiceintheresult,becausetheGroupByclausehasincludedboththeseller-relatedrecordofthe"Proposal" table and the record linked to the seller of the "Contract" table. / p>
See the query:
select DISTINCT 'clientes'.'id', 'clientes'.'pessoa_tipo', 'clientes'.'razao_nome', 'clientes'.'nome_fantasia', 'clientes'.'email', 'clientes'.'logradouro', 'clientes'.'numero', 'clientes'.'complemento', 'clientes'.'bairro', 'clientes'.'cidade', 'clientes'.'uf', 'clientes'.'cep', 'clientes'.'telefone', 'clientes'.'celular', 'clientes'.'cnpj_cpf', 'clientes'.'inscricao_rg', 'clientes'.'contato_nome', 'clientes'.'contato_funcao', 'clientes'.'representante_nome', 'clientes'.'representante_rg', 'clientes'.'representante_cpf', 'clientes'.'atividade_rf', 'clientes'.'atividades_comerciais_id', 'contratos'.'vendedores_id' as 'contrato_vendedor', 'propostas'.'vendedores_id' as 'proposta_vendedor'
from 'clientes' left join 'contratos' on 'contratos'.'clientes_id' = 'clientes'.'id' left join 'propostas' on 'propostas'.'clientes_id' = 'clientes'.'id'
group by 'clientes'.'id', 'clientes'.'pessoa_tipo', 'clientes'.'razao_nome', 'clientes'.'nome_fantasia', 'clientes'.'email', 'clientes'.'logradouro', 'clientes'.'numero', 'clientes'.'complemento', 'clientes'.'bairro', 'clientes'.'cidade', 'clientes'.'uf', 'clientes'.'cep', 'clientes'.'telefone', 'clientes'.'celular', 'clientes'.'cnpj_cpf', 'clientes'.'inscricao_rg', 'clientes'.'contato_nome', 'clientes'.'contato_funcao', 'clientes'.'representante_nome', 'clientes'.'representante_rg', 'clientes'.'representante_cpf', 'clientes'.'atividade_rf', 'clientes'.'atividades_comerciais_id', 'contratos'.'vendedores_id', 'propostas'.'vendedores_id'
having (Max(contratos.vigencia_final) IS NULL AND Max(contratos.vigencia_final) IS NULL)
OR
(Max(contratos.vigencia_final) <= '2017-11-23' AND Max(propostas.validade) <= '2017-11-23')
OR
(Max(contratos.vigencia_final) <= '2017-11-23' AND Max(propostas.validade) IS NULL)
OR
(Max(propostas.validade) <= '2017-11-23' AND Max(contratos.vigencia_final) IS NULL)
OR
(contratos.vendedores_id = '3' OR propostas.vendedores_id = '3')