Jump to content

Ajuda em duplicados


nellaf
 Share

Recommended Posts

Boa noite

Sou novo nestas coisas e queria saber se me podiam ajudar num pequena coisa em SQL.

Como faço para que quando seleciona 2 atributos com datas, não se repitam. Eu fim uma pequena base de dados para uma parque de estacionamento onde faço o registo da hora de entrada e o registo da hora de saida, mas o que distingue a hora de entrada e hora de saida é o atributo entrada/saida o qual é preenchido com 'E' caso seja hora de entrada e com 'S' na hora saida, mas quando seleciono, aparece o seguinte (para a mesma entrada, mostra todas as saidas):

09/11/01 23:00:00    |      09/11/01 23:40:00

09/11/01 23:00:00    |      09/11/02 12:30:00

09/11/02 12:00:00    |      09/11/01 23:40:00

09/11/02 12:00:00    |      09/11/02 12:30:00

e o que deveria aparecer era:

09/11/01 23:00:00    |      09/11/01 23:40:00

09/11/02 12:00:00    |      09/11/02 12:30:00

e depois queria contabilizar o tempo que esteve no parque.

alguém me pode ajudar, sff.

Desde já obrigado

Link to comment
Share on other sites

Mas qual é a chave primária que tens na tabela? Convém teres um campo único. Se o tiveres, torna as coisas mais simples.

Apresenta a estrutura da tabela

Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Link to comment
Share on other sites

Que base de dados estás a usar?

Em sql server podes usar o select distinct... para não teres os dados repetidos.

Depois para contar o tempo fazes uma query deste tipo:

select datediff( ver documentação ) from

(select distinct ...)

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

A estrutura é esta para o parquee estou a usar em PostGres:

CREATE TABLE parque(

IdLocalP CHAR(10),

ValorMinuto NUMERIC,

PRIMARY KEY (IdLocalP),

FOREIGN KEY (Idlocalp) REFERENCES servico

);

CREATE TABLE tem(

IdLocalP CHAR(10),

idLocal CHAR(10),

PRIMARY KEY (idLocal),

FOREIGN KEY (Idlocalp) REFERENCES servico

);

CREATE TABLE cancela(

idLocal CHAR(10),

Entrada_Saida CHAR(1) CHECK(Entrada_Saida='E' OR Entrada_Saida='S'),

PRIMARY KEY (idLocal),

FOREIGN KEY (Idlocal) REFERENCES tem

);

CREATE TABLE passagem(

IdVIAVERDE INTEGER CHECK(IdVIAVERDE>0),

idLocal CHAR(10),

Data TIMESTAMP,

PRIMARY KEY (IdVIAVERDE,idLocal,Data),

FOREIGN KEY (IdVIAVERDE) REFERENCES clienteViaVerde,

FOREIGN KEY (Idlocal) REFERENCES tem

);

e o código que utilzei foi este:

select tabela2.idViaVerde, tabela2.idLocalP, tabela2.dataEntrada, passagem.data as dataSaida
from (select idViaVerde, parque.idLocalP, passagem.Data as dataEntrada
from passagem, cancela, tem, parque
where passagem.idLocal=cancela.idLocal and
cancela.idlocal=tem.idlocal and
tem.idlocalp=parque.idlocalp and
passagem.Data BETWEEN '09/11/01 00:00:00' and '09/11/30 23:59:59' and
passagem.idViaverde=123 and
cancela.entrada_saida='E') tabela2, passagem, cancela
where tabela2.idViaVerde=passagem.idViaverde and
passagem.idLocal=cancela.idlocal and
cancela.entrada_saida='S'
group by tabela2.idViaVerde,tabela2.idLocalP,tabela2.dataentrada, passagem.data;
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.