Ir para conteúdo

POWERED BY:

Arquivado

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

rafa-martin

trazer todos os registros das tabelas

Recommended Posts

pessoal olhem só.eu estou tentando fazer uma consulta que funciona dessa forma.eu possuo uma tabela q existem 30 vendedores. Então faço uma consulta por data para ver o total de vendas de cada vendedor. Só que tem um porém. Quando eu realizo essa busca ele tem q me trazer os 30 vendedor, mesmo aqueles q não vendedram. Ou seja, se eu busca pela seguintes data: 01 a 15 de julho ele me traz apenas alguns, só q tem q trazer todos, mesmo aqueles q não vendedram.fiz essa sql dentro do query analyzer:SELECT brick.eqz, cadastrovendedor.nome, Sum(itens_pedido2.qtde) AS SomaDeqtde1, cadastrovendedor.divisao, Etica.divisaoe, Etica.objetivoe, Etica.SomaDeqtdee, Generica.divisaog, Generica.objetivog, Generica.SomaDeqtdeg, OTC.divisaoo, OTC.objetivoo, OTC.SomaDeqtdeoFROM brick, cadastrovendedor, itens_pedido2, etica, generica, otc, pedidoWHERE etica.divisaoe *= divisao.divisaoand generica.eqzg *= brick.eqzand otc.eqzo *= brick.eqzand etica.eqze *= brick.eqzand brick.eqz *= pedido.eqzand cadastrovendedor.codigo_vendedor *= brick.codigo_vendedorand pedido.codigo_pedido *= itens_pedido2.codigo_pedidoand divisao.codigo_divisao *= objetivo.codigo_divisaoand brick.eqz *= objetivo.eqzand (((pedido.cancelado)='N') AND ((itens_pedido2.data) Between convert(Datetime, '7/1/2005',103) And convert(Datetime,'7/15/2005',103))/* formato data dd/mm/aaaa*/GROUP BY brick.eqz, cadastrovendedor.nome, cadastrovendedor.divisao, Etica.divisaoe, Etica.objetivoe, Etica.SomaDeqtdee, Generica.divisaog,Generica.objetivog, Generica.SomaDeqtdeg, OTC.divisaoo, OTC.objetivoo, OTC.SomaDeqtdeoORDER BY cadastrovendedor.divisao;e está dando erro na linha do group by. Esse erro: Server: Msg 156, Level 15, State 1, Line 23Incorrect syntax near the keyword 'GROUP'.Fiz essa sql no query analyzer:SELECT brick.eqz, cadastrovendedor.nome, Sum(itens_pedido2.qtde) AS SomaDeqtde1, cadastrovendedor.divisao, Etica.divisaoe, Etica.objetivoe, Etica.SomaDeqtdee, Generica.divisaog, Generica.objetivog, Generica.SomaDeqtdeg, OTC.divisaoo, OTC.objetivoo, OTC.SomaDeqtdeoFROM ((cadastrovendedor INNER JOIN (((Etica INNER JOIN divisao ON Etica.divisaoe = divisao.divisao) INNER JOIN (OTC INNER JOIN (Generica INNER JOIN brick ON Generica.eqzg = brick.eqz) ON OTC.eqzo = brick.eqz) ON Etica.eqze = brick.eqz) INNER JOIN pedido ON brick.eqz = pedido.eqz) ON (cadastrovendedor.codigo_vendedor = brick.codigo_vendedor) AND (cadastrovendedor.codigo_vendedor = pedido.codigo_vendedor)) INNER JOIN itens_pedido2 ON pedido.codigo_pedido = itens_pedido2.codigo_pedido) INNER JOIN objetivo ON (divisao.codigo_divisao = objetivo.codigo_divisao) AND (brick.eqz = objetivo.eqz)WHERE (((pedido.cancelado)="N") AND ((itens_pedido2.data) Between #7/1/2005# And #7/15/2005#))GROUP BY brick.eqz, cadastrovendedor.nome, cadastrovendedor.divisao, Etica.divisaoe, Etica.objetivoe, Etica.SomaDeqtdee, Generica.divisaog, Generica.objetivog, Generica.SomaDeqtdeg, OTC.divisaoo, OTC.objetivoo, OTC.SomaDeqtdeoORDER BY cadastrovendedor.divisao;até funciona, porém ele não me traz todos. Nem com left ou right join traz todos.alguém poderia me ajudar?valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu caro use o LEFT OUTER JOIN

 

Com isso ira retornar tds os registros da tabela da esquerda e somente o q for comum da tabela da direita ou seja irá mostrar todos os vendedores inclusive aqueles q não tiveram venda.

 

Espero ter lhe ajudado.

 

Ricardo Gouvêa

 

pessoal olhem só.

 

eu estou tentando fazer uma consulta que funciona dessa forma.

 

eu possuo uma tabela q existem 30 vendedores. Então faço uma consulta por data para ver o total de vendas de cada vendedor. Só que tem um porém. Quando eu realizo essa busca ele tem q me trazer os 30 vendedor, mesmo aqueles q não vendedram. Ou seja, se eu busca pela seguintes data: 01 a 15 de julho ele me traz apenas alguns, só q tem q trazer todos, mesmo aqueles q não vendedram.

 

fiz essa sql dentro do query analyzer:

 

SELECT brick.eqz, cadastrovendedor.nome,

Sum(itens_pedido2.qtde) AS SomaDeqtde1, cadastrovendedor.divisao,

Etica.divisaoe,

Etica.objetivoe,

Etica.SomaDeqtdee,

Generica.divisaog,

Generica.objetivog,

Generica.SomaDeqtdeg,

OTC.divisaoo,

OTC.objetivoo,

OTC.SomaDeqtdeo

FROM brick, cadastrovendedor, itens_pedido2, etica, generica, otc, pedido

WHERE etica.divisaoe *= divisao.divisao

and generica.eqzg *= brick.eqz

and otc.eqzo *= brick.eqz

and etica.eqze *= brick.eqz

and brick.eqz *= pedido.eqz

and cadastrovendedor.codigo_vendedor *= brick.codigo_vendedor

and pedido.codigo_pedido *= itens_pedido2.codigo_pedido

and divisao.codigo_divisao *= objetivo.codigo_divisao

and brick.eqz *= objetivo.eqz

and (((pedido.cancelado)='N') AND ((itens_pedido2.data) Between convert(Datetime, '7/1/2005',103) And convert(Datetime,'7/15/2005',103))/* formato data dd/mm/aaaa*/

GROUP BY brick.eqz, cadastrovendedor.nome, cadastrovendedor.divisao,

Etica.divisaoe,

Etica.objetivoe,

Etica.SomaDeqtdee,

Generica.divisaog,

Generica.objetivog,

Generica.SomaDeqtdeg,

OTC.divisaoo,

OTC.objetivoo,

OTC.SomaDeqtdeo

ORDER BY cadastrovendedor.divisao;

 

e está dando erro na linha do group by. Esse erro: Server: Msg 156, Level 15, State 1, Line 23

Incorrect syntax near the keyword 'GROUP'.

 

 

Fiz essa sql no query analyzer:

 

SELECT brick.eqz, cadastrovendedor.nome, Sum(itens_pedido2.qtde) AS SomaDeqtde1, cadastrovendedor.divisao, Etica.divisaoe, Etica.objetivoe, Etica.SomaDeqtdee, Generica.divisaog, Generica.objetivog, Generica.SomaDeqtdeg, OTC.divisaoo, OTC.objetivoo, OTC.SomaDeqtdeo

FROM ((cadastrovendedor INNER JOIN (((Etica INNER JOIN divisao ON Etica.divisaoe = divisao.divisao) INNER JOIN (OTC INNER JOIN (Generica INNER JOIN brick ON Generica.eqzg = brick.eqz) ON OTC.eqzo = brick.eqz) ON Etica.eqze = brick.eqz) INNER JOIN pedido ON brick.eqz = pedido.eqz) ON (cadastrovendedor.codigo_vendedor = brick.codigo_vendedor) AND (cadastrovendedor.codigo_vendedor = pedido.codigo_vendedor)) INNER JOIN itens_pedido2 ON pedido.codigo_pedido = itens_pedido2.codigo_pedido) INNER JOIN objetivo ON (divisao.codigo_divisao = objetivo.codigo_divisao) AND (brick.eqz = objetivo.eqz)

WHERE (((pedido.cancelado)="N") AND ((itens_pedido2.data) Between #7/1/2005# And #7/15/2005#))

GROUP BY brick.eqz, cadastrovendedor.nome, cadastrovendedor.divisao, Etica.divisaoe, Etica.objetivoe, Etica.SomaDeqtdee, Generica.divisaog, Generica.objetivog, Generica.SomaDeqtdeg, OTC.divisaoo, OTC.objetivoo, OTC.SomaDeqtdeo

ORDER BY cadastrovendedor.divisao;

 

até funciona, porém ele não me traz todos. Nem com left ou right join traz todos.

 

alguém poderia me ajudar?

 

valeu

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

todos os vendedores possuem registro?!procure ver se existe algum campo chave que esteja nulo, se existir talvez seja esse o problema.quando você faz o inner talvez ele nao retorne todos por causa de algum registro nulo.

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.