Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EduardoAugustoPHP

construir uma query que traga dados de outras

Recommended Posts

Preciso de uma ajuda pra construir uma query que traga dados de outras 5 tabelas. Vou tentar ser o mais claro possível, caso falte informação, por favor me informem.


Vamos lá:


Tenho a tabela Midias: midias.png


e a tabela Propostas: propostas.png


As outras 3 tabelas é tranquilo, pois preciso apenas trazer um campo, não precisando de somas nem qualquer outra função.


O resultado deve ser esse:


resultado.png


Minha query Atual é essa:



SELECT
data_proposta,
propostas.source_code,
sum(midias.custo) as custo,
COUNT(data_proposta) AS propostas,
SUM(if(precog_FK <> 9, 1, 0)) AS validas
FROM propostas
LEFT JOIN midias
ON `data_proposta` = `midias`.`data`
GROUP BY data_proposta

Estou com problemas quando o tenho que fazer as somas dos custos da tabela mídias.


Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal é cria um relacionamento entre IDs, pois fica confuso por data...

 

Por exemplo, midia 1 com proposta 1, midia 2 com proposta 1 também, tornará sua vida mais fácil, sem falar que índices nestes itens tornaria a consulta mais rápida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas eu acho que assim nao rola.
Pensa comigo:
Eu tenho várias propostas por dia de inúmeras midias (facebook, google e afins).

A consulta precisa retornar uma data por linha, com a contagem de todos os custos, cliques e impressoes das midias.

Por isso estou usando a data para comparação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar uma tabela de relacionamento onde existam os campos id_proposta, id_midia, data_proposta, depois faz um JOIN (INNER ou LEFT, ou o que for conveniente) para identificar qual é qual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

São 5 ou 2 tabelas sendo lidas ?

 

Qual o agrupamento ?

 

Confesso que não entendi o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O resultado finald e vem de 5 tabelas, mas minha dificulda está em montar a query que faz a soma de alguns campos específicos.

Preciso que o resultado da query seja listado por data, e traga a soma dos cliques, impressoes e custo da tabela midias.

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o fato de fazer join com 5 tabelas PODE fazer que o produto cartesiano provoque o erro.

 

 

Preciso que o resultado da query seja listado por data, e traga a soma dos cliques, impressoes e custo da tabela midias.

Entendeu?

 

 

Creio que sim , me parece um caso simples

SELECT
data_proposta,
propostas.source_code,
sum(midias.custo) as custo,
COUNT(data_proposta) AS propostas,
SUM(if(precog_FK <> 9, 1, 0)) AS validas
FROM propostas
LEFT JOIN midias
ON `data_proposta` = `midias`.`data`
GROUP BY data_proposta,
         propostas.source_code

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, essa query nao rodou.
Fiz da seguinte maneira e rolou:

Criei um indice nas tabelas pra otimizar a consulta e fiz essa query:

SELECT
    m.data,
    date_format(m.data,'%d-%m-%Y') AS mdata,
    m.midia_origem,
    p.source_code,
    m.campanha,
	SUM(if(precog_FK <> 9, 1, 0)) AS validas,
    COUNT(m.campanha) AS propostas,
    SUM(m.custo) as custo
FROM 
    propostas p
LEFT JOIN
    midias m
    ON m.source_code = p.source_code
GROUP BY
    mdata
ORDER BY 
    mdata ASC, m.source_code ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.