• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jpedrosc

Ajuda sql*plus

13 mensagens neste tópico

Boas tardes,

como é que posso criar um consulta em sql/plus em que verifique se o valor (NUMBER) de um campo que ate é chave primaria sao realmente unicos??!! :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se é chave primária é unico, ponto final.

Só se a BD for muito mazinha e tiver bugs que permitam isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois que sao unicos eu sei :P mas vamos imaginar que nao é chave primaria, como posso fazer para verificar s existem mais dados iguais?!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

select var,count(var) from tabela
group by var
having count(var) > 1

deve ser isto

se aparecerem linhas, é porque falha na unicidade

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim é isso mesmo  :P

ja agora por ver ai o GROUP BY, como é k posso usar o ORDER BY juntamente com o GROUP BY onde o campo do GROUP BY seja diferente do campo do ORDER BY????

exemplo

SELECT.... GROUP BY campox ORDER BY campoy

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

So podes ordenar campos que existam na selecção (select <campos_select> from...)

O group by coloca restrições aos campos usados no group ou funções agregadoras tipo count(...)

Por isso essa forma não é válida, nem estou a ver muito sentido ordenar um campo que nem está visivel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois acredito que sim, pois nao consegui resolver e segundos os manuais nao seria de todo possivel.

Mas tenho um comando com essas caracteristicas, em que tenho que agrupar os dados por departamento e ordenalos por data de admissao.

obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agrupar por departamento pressuponho que existem linhas repetidas para departamento.

Admissão de que?

Podes mostrar estas tabelas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguns dos dados da tabela sao os seguintes:

EMPNO ENAME JOB HIRDATE         SAL COMM DEPTNO

7521 ward salesman    84.03.26 1250 50     30

7654 martin salesman    83.12.05 1250 1400   30

7782 clark manager       84.05.14   2450   0       10

7839 king president 84.07.09  5000     0         10

7876 adams clerk 84.07.04  1100     0         20

7902 ford analyst           83.12.05  3000 0 20

sim os dados de departamento (deptno) repetem-se. portanto pretendia agrupar os departamentos e ordenar por hirdate

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não faz sentido.

Agrupando por DEPTNO tens incluidas varias datas em cada um.

Só se usares uma data minima ou data máxima tipo: max(HIRDATE) isto pode ser usado no agrupamento, e ordenado.

Não sei se isto tem alguma utilidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim ate pode dar jeito caso quiser saber qual o empregado que esta a menos tempo no departamento...

se usasse-mos o MAX(hirdate) por exemplo como poderia ficar para usar o group e o order???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
SELECT deptno,max(hirdate) FROM tabela
GROUP BY deptno
order by max(hirdate)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:thumbsup:

é isso tudo o problema é k eu estava a fazer

SELECT MAX(hirdate) AS Minimo FROM emp GROUP BY deptno ORDER BY hirdate

o qual dava erro. mas agora ja percebi o pk ;) obrigado pela ajuda []

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora