Dúvidas em SQL
E ai pessoal!!
Muto obrigado por sanarem a maioria das minhas dúvidas.Este clube é legal mesmo!!!
Aqui vai outra..
Quero selecionar o conteúdo de duas tabelas mestre-detalhe via SQL.
A tabela Produtos tem os campos[codprod,nomeprod,codICMS,........]
A tabela ICMS tem os campos[codigoICMS,AliqICMS,......]
Então vem o código...
´select * from tabprodutos,tabicms
where codicms=codigoicms´
Funciona perfeitamente, porém se eu cadastrar um código de icms em branco o produto que foi cadastrado com o icms em branco não aparece no GRID qdo eu dou o ´select...´;
Como faço para funcionar o ´where codicms(*Campoembranco*)=codigoicms(*campoembranco*)
(*campoembranco*) é apenas para explicar, nao é comando.
Certo que serei auxíliado, desde já agradeço!!!
Valeu galera!
Muto obrigado por sanarem a maioria das minhas dúvidas.Este clube é legal mesmo!!!
Aqui vai outra..
Quero selecionar o conteúdo de duas tabelas mestre-detalhe via SQL.
A tabela Produtos tem os campos[codprod,nomeprod,codICMS,........]
A tabela ICMS tem os campos[codigoICMS,AliqICMS,......]
Então vem o código...
´select * from tabprodutos,tabicms
where codicms=codigoicms´
Funciona perfeitamente, porém se eu cadastrar um código de icms em branco o produto que foi cadastrado com o icms em branco não aparece no GRID qdo eu dou o ´select...´;
Como faço para funcionar o ´where codicms(*Campoembranco*)=codigoicms(*campoembranco*)
(*campoembranco*) é apenas para explicar, nao é comando.
Certo que serei auxíliado, desde já agradeço!!!
Valeu galera!
Igor
Curtidas 0
Respostas
Koplin
04/09/2003
Tenta assim:
SELECT T.*, I.AliqICMS FROM tabprodutos T, tabaliqicms I LEFT JOIN I.codicms on I.codicms=T.codicms
SELECT T.*, I.AliqICMS FROM tabprodutos T, tabaliqicms I LEFT JOIN I.codicms on I.codicms=T.codicms
GOSTEI 0
Lucas Borba
04/09/2003
E ai pessoal!!
Muto obrigado por sanarem a maioria das minhas dúvidas.Este clube é legal mesmo!!!
Aqui vai outra..
Quero selecionar o conteúdo de duas tabelas mestre-detalhe via SQL.
A tabela Produtos tem os campos[codprod,nomeprod,codICMS,........]
A tabela ICMS tem os campos[codigoICMS,AliqICMS,......]
Então vem o código...
´select * from tabprodutos,tabicms
where codicms=codigoicms´
Funciona perfeitamente, porém se eu cadastrar um código de icms em branco o produto que foi cadastrado com o icms em branco não aparece no GRID qdo eu dou o ´select...´;
Como faço para funcionar o ´where codicms(*Campoembranco*)=codigoicms(*campoembranco*)
(*campoembranco*) é apenas para explicar, nao é comando.
Certo que serei auxíliado, desde já agradeço!!!
Valeu galera!
Muto obrigado por sanarem a maioria das minhas dúvidas.Este clube é legal mesmo!!!
Aqui vai outra..
Quero selecionar o conteúdo de duas tabelas mestre-detalhe via SQL.
A tabela Produtos tem os campos[codprod,nomeprod,codICMS,........]
A tabela ICMS tem os campos[codigoICMS,AliqICMS,......]
Então vem o código...
´select * from tabprodutos,tabicms
where codicms=codigoicms´
Funciona perfeitamente, porém se eu cadastrar um código de icms em branco o produto que foi cadastrado com o icms em branco não aparece no GRID qdo eu dou o ´select...´;
Como faço para funcionar o ´where codicms(*Campoembranco*)=codigoicms(*campoembranco*)
(*campoembranco*) é apenas para explicar, nao é comando.
Certo que serei auxíliado, desde já agradeço!!!
Valeu galera!
Opa, tudo bem?
acredito que também funcione:
select * from tabprodutos, tabicms
where codicms=codigoicms or (select codicms from tabprodutos where codicms is null) = (select codigoICMS from tabicms where codigoICMS is null);
GOSTEI 0
Arthur Heinrich
04/09/2003
Comentando a sugestão do Koplin, eu nunca vi esta sintaxe, onde o join vem após a inclusão da tabela no from.
Para mim, só funcionava do jeito tradicional:
Porém, o problema não é só a query. Se todo produto precisa ser acompanhado de uma alíquota de ICMS, o código não pode estar nulo e precisa ser um código válido.
Para que não aceite valores nulos:
alter table tabprodutos modify codicms not null;
Isto cria uma constraint de check, impedindo que dados sejam inseridos com a coluna "codicms" valendo null.
Para que o código do ICMS seja válido, ele precisa estar cadastrado na tabela tabaliqicms.
alter table tabprodutos
add constraint aliqicms_produtos_fk
foreign key (codicms)
references tabaliqicms (codicms);
Isto cria a constraint de foreign key. A cada registro inserido na tabela de produtos, o banco verifica se o codicms do produto está cadastrado na tabela de alíquotas. Caso não esteja, o banco aborta o insert com uma mensagem de violação da constraint.
Para mim, só funcionava do jeito tradicional:
select p.*, ai.aliqicms from tabprodutos p left outer join tabaliqicms ai on ai.codicms = p.codicms
Porém, o problema não é só a query. Se todo produto precisa ser acompanhado de uma alíquota de ICMS, o código não pode estar nulo e precisa ser um código válido.
Para que não aceite valores nulos:
alter table tabprodutos modify codicms not null;
Isto cria uma constraint de check, impedindo que dados sejam inseridos com a coluna "codicms" valendo null.
Para que o código do ICMS seja válido, ele precisa estar cadastrado na tabela tabaliqicms.
alter table tabprodutos
add constraint aliqicms_produtos_fk
foreign key (codicms)
references tabaliqicms (codicms);
Isto cria a constraint de foreign key. A cada registro inserido na tabela de produtos, o banco verifica se o codicms do produto está cadastrado na tabela de alíquotas. Caso não esteja, o banco aborta o insert com uma mensagem de violação da constraint.
GOSTEI 0