[firebase-br] Demais Funcionalidades
Eduardo Jedliczka (TeamFB)
jedyfb em gmail.com
Seg Dez 11 11:19:04 -03 2006
M> 1. Porque não posso deletar um grupo de registros?
M> Ex: DELETE FROM FROM PRODUTOS P,VENDAS V WHERE P.ID = V.ID AND V.ID = 15
O Padrão SQL não prevê comandos de insert, delete e update que manipulem
mais do que uma tabela.
Mas prevê que seja possível fazer joins em deletes e updates para limitar
(ou filtrar se preferir) os registros da tabela principal que deverão ser
excluídos ou alterados. O FireBird ainda está engatinhando neste assunto,
mas muitos bancos executam sem erros este seu comando DML - excluindo todos
os produtos em que o P.ID seja igual à alguma venda V.ID e onde este V.ID
seja igual a 15.
M> 2. Porque não existe um GROUP BY *, sendo que sempre atrelamos os
M> campos do SELECT com todos no GROUP!
M> Ex: SELECT NOME,ID FROM PESSOAS GROUP BY *
ahhh... aqui realmente temos uma deficiência do padrão SQL. confesso que
isto faz falta. mas surgem 2 problemas:
1º) alguns bancos permitem o agrupamento por apenas algumas colunas, ou por
campos não presentes no select;
2º) se você usar um group by *, pode-se sentir tentado a usar "select *,
sum(valor) as soma from tabela group by *", o que não trará nada diferente
de "select *, valor as soma from tabela", ou em outras palavras, o *
dificulta que nós pobres DBAs e desenvolvedores encontremos problemas na
construção do comando DML;
3º) alguns bancos permitem que se crie um agrupamento cumulativo (tipo livro
caixa ou diário razão) e com o group by *, isto não é possível.
Mas, se você deseja clareza no seu comando, coloque o SUM num SUB-SELECT e
não coloque o group by no final.
======================
Eduardo Jedliczka
Membro do TeamFB - FireBase
Apucarana - PR
======================
"Posso não concordar com nada do que dizes.
Mas defenderei até a morte o seu direito de dizê-lo"
(Voltaire 1694-1778)
----- Original Message -----
From: "Mario" <brujeria em task.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, December 07, 2006 8:54 PM
Subject: [firebase-br] Demais Funcionalidades
Ola,
1. Porque não posso deletar um grupo de registros?
Ex: DELETE FROM FROM PRODUTOS P,VENDAS V WHERE P.ID = V.ID AND V.ID = 15
PS: Eu sei que este recurso pode ser alcançado com o CASCADE, mas mesmo
assim, caso eu não queira que todo registro seja CASCADE poderia usar
este DELETE.
2. Porque não existe um GROUP BY *, sendo que sempre atrelamos os campos
do SELECT com todos no GROUP!
Ex: SELECT NOME,ID FROM PESSOAS GROUP BY *
PS: Eu sei que este recurso tb pode ser feito com GROUP BY 1,2, mas da
outra forma economiza tempo de desenvolvimento a aumenta a legibilidade!
Valeu
Mario H.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista