/Banco de dados

voltar
/Banco de dados

UNION ou UNION ALL

PorJuliano Ignácio em

Na
coluna anterior
vimos o uso de UNION,
no entanto, nem sempre desejamos o comportamento padrão apresentado.
Quando o UNION é executado, os dados
referentes às SELECTs envolvidas
são ordenados, eliminando a duplicação de registros. Porém, se
você deseja unir as consultas de forma a aparecer TODOS os registros,
use UNION ALL.

Tomando como exemplo as tabelas criadas na
coluna anterior


SELECT

venda.produto
FROM
venda
UNION

SELECT

troca.troca
FROM
troca;

SELECT

venda.produto
FROM
venda
UNION ALL

SELECT

troca.troca
FROM
troca;
produto
————————–
Despertador
Fichário
Garrafa Térmica
Lapiseira
Mala Viagem
Maleta Executivo
Mochila
Relógio
Rádio
Saca-rolha
(10 rows)
produto
————————–
Relógio
Mala Viagem
Saca-rolha
Fichário
Despertador
Mochila
Rádio
Lapiseira
Relógio
Maleta Executivo
Garrafa Térmica
Fichário
(12 rows)

SUPRIMINDO AS DUPLICIDADES

Para que valores duplicados não sejam mostrados
no resultado de uma consulta (sem usar UNION, como vimos anteriormente),
usamos DISTINCT. Veja que, o valor duplicado se refere ao registro
como um todo, e não somente a uma coluna. Para que possamos entender,
vamos inserir algumas linhas em nossa tabela de vendas criada
anteriormente


INSERT INTO venda (cliente_id,
data, valor, produto)
VALUES (3,’2003-02-12′,16,’Relógio’);
INSERT INTO venda (cliente_id, data, valor, produto)
VALUES (1,’2003-02-15′,110,’Mala Viagem’);
INSERT INTO venda (cliente_id, data, valor, produto)

VALUES (3,’2003-02-16′,10,’Saca-rolha’);
INSERT INTO venda (cliente_id, data, valor, produto)
VALUES (1,’2003-02-20′,32,’Fichário’);

Após inserir as vendas acima, gostaria de saber
quais são os produtos que estamos vendendo desde o início dos
lançamentos, como iremos observar, a primeira consulta irá mostrar
produtos repetidos, o que não é necessário e, às vezes, atrapalha.
Na segunda consulta, a cláusula DISTINCT
esconde a duplicidade dos registros e coloca-os na ordem da primeira
coluna (neste caso só temos uma mesmo).

SELECT
produto FROM venda;
SELECT
DISTINCT
produto FROM
venda;
produto
————-
Relógio
Mala Viagem
Saca-rolha
Fichário
Despertador
Mochila
Rádio
Lapiseira
Relógio
Mala Viagem
Saca-rolha
Fichário
(12 rows)
produto
————-
Despertador
Fichário
Lapiseira
Mala Viagem
Mochila
Relógio
Rádio
Saca-rolha
(8 rows)

VARIÁVEIS MÁGICAS

O PostgreSQL possui 4 variáveis ‘mágicas’
que guardam informações sobre o usuário corrente e data e
hora atuais, facilitando, talvez, a implementação de rotinas de
auditoria.

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURRENT_USER

SELECT
CURRENT_DATE;

date
————
2003-02-24
(1 row)

Para
saber a quanto tempo foram vendidos os produtos, podemos executar
a seguinte consulta:
SELECT
produto,
(CURRENT_DATE – data) AS dias

FROM
venda
ORDER
BY
produto;

produto | dias
————-+——
Despertador | 63
Fichário | 4
Fichário | 66
Lapiseira | 66
Mala Viagem | 63
Mala Viagem | 9
Mochila | 63
Relógio | 63
Relógio | 12
Rádio | 65
Saca-rolha | 8
Saca-rolha | 65
(12 rows)

O POSTGRESQL E O GEOPROCESSAMENTO

Elephant!

Tenho
recebido vários e-mails com interesse em saber sobre a utilização
do PostgreSQL em GeoProcessamento.

Aqui há pelo menos uma alternativa, aos sistemas caríssimos que temos no
mercado, ou então, a outros sistemas gratuitos, porém, disponíveis somente
em plataforma Unix.

O PostGIS adiciona suporte para objetos geográficos ao banco de dados
objeto-relacional PostgreSQL. Na realidade, o PostGIS “habilita
espacialmente” o servidor PostgreSQL, permitindo que ele seja usado como um
banco de dados espacial para Sistemas de Informações Geográficas (GIS),
igualmente a outros existentes no mercado como o ESRI’s IDE e a extensão
Oracle’s Spacial.

O PostGIS é distribuido sob a licença GNU GPL. Maiores informações
em: http://postgis.refractions.net


Semana que vem tem mais.
Dúvidas, críticas e sugestões podem ser enviadas diretamente para
meu
e-mail, colocando no assunto (subject) “iMasters-PSQL”.

Um abraço a todos.

Deixe um comentário! 0

0 comentário

Comentários

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

leia mais
Este projeto é mantido pelas empresas:
Este projeto é apoiado pelas empresas: