[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