Flavio Nascto Postado Novembro 25, 2009 Denunciar Share Postado Novembro 25, 2009 PessoalEstou querendo fazer uma consulta que me traga todos os registros da tabela cliente e todos os pedidos feitos.O problema é que eu quero que apareça todos os clientes independente de ter ou não pedidoTabela: cliente (cod_cli, nome_cliente)Tabela:Pedido (cod_pedido, cod_cliente, Dt_Pedido)Select nome_cliente, dt_peditofrom cliente, pedidowhere codcli = cod_clienteSó sei fazer assim.. mas aqui não mostra todos os clientes, só aparecem o que tem pedido, claro por causa da iguadade. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Novembro 25, 2009 Denunciar Share Postado Novembro 25, 2009 você pode utilizar a sintaxe *= ou =* - especificação Ansi 92. Mas a partir do SQL2005, estas implementações estão descontinuadas. O melhor mesmo é utilizar a sintaxe "left outer join" ou "right outer join" (que é a mesma coisa do *= ou =*). Como ficaria o select:select nome_cliente, dt_pedito from cliente left join pedido on codcli = cod_cliente Testa no seu select também a sintaxe *= ou =*.... ;.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Sims Brazilienses Postado Novembro 21, 2010 Denunciar Share Postado Novembro 21, 2010 (editado) PessoalEstou querendo fazer uma consulta que me traga todos os registros da tabela cliente e todos os pedidos feitos.O problema é que eu quero que apareça todos os clientes independente de ter ou não pedidoTabela: cliente (cod_cli, nome_cliente)Tabela:Pedido (cod_pedido, cod_cliente, Dt_Pedido)Select nome_cliente, dt_peditofrom cliente, pedidowhere codcli = cod_clienteSó sei fazer assim.. mas aqui não mostra todos os clientes, só aparecem o que tem pedido, claro por causa da iguadade.Estava com o mesmo problema, tentei usar o modo colocado pelo outro colega, mas ainda dava erro. Depois de muito pesquisar achei a forma correta de colocar a query para obter a resposta desejada:Select nome_cliente, dt_peditofrom cliente left outer join pedidoon codcli = cod_clienteorder by nome_clientebeleza :)Obs: uso o SQL Server 2005. Quando se tenta usar *= ou =* a mensagem de erro é essa: A consulta usa operadores de associações externas não-ANSI ("*=" ou "=*"). Para executar esta consulta sem modificações, defina o nível de compatibilidade do banco de dados como 80 ou menos usando o procedimento armazenado sp_dbcmptlevel. É bastante recomendável regravar a consulta usando operadores de associações externas ANSI (LEFT OUTER JOIN, RIGHT OUTER JOIN). Nas versões futuras do SQL Server, os operadores de associação não-ANSI não terão suporte nem mesmo para manter compatibilidade com versões anteriores. Editado Novembro 21, 2010 por Sims Brazilienses Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Novembro 22, 2010 Denunciar Share Postado Novembro 22, 2010 Bom dia Sims, O select que postou:Select nome_cliente, dt_peditofrom cliente left outer join pedidoon codcli = cod_clienteorder by nome_cliente É exatamente igual ao exemplo que postei:select nome_cliente, dt_pedito from cliente left join pedido on codcli = cod_cliente Perceba que não possui a sintaxe OUTER, pois a mesma pode ser suprimida. Expliquei que a sintaxe *= ou =* será descontinuada: "você pode utilizar a sintaxe *= ou =* - especificação Ansi 92. Mas a partir do SQL2005, estas implementações estão descontinuadas." você pode sim alterar o nível de compatibilidade do SQL, mas sua performance diminuíra, pois o SQL realiza internamente a conversão da sintaxe. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Flavio Nascto
Pessoal
Estou querendo fazer uma consulta que me traga todos os registros da tabela cliente e todos os pedidos feitos.
O problema é que eu quero que apareça todos os clientes independente de ter ou não pedido
Tabela: cliente (cod_cli, nome_cliente)
Tabela:Pedido (cod_pedido, cod_cliente, Dt_Pedido)
Select nome_cliente, dt_pedito
from cliente, pedido
where codcli = cod_cliente
Só sei fazer assim.. mas aqui não mostra todos os clientes, só aparecem o que tem pedido, claro por causa da iguadade.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.