nellaf Posted November 22, 2009 at 02:17 AM Report Share #297150 Posted November 22, 2009 at 02:17 AM 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 More sharing options...
renafi Posted November 22, 2009 at 11:01 AM Report Share #297158 Posted November 22, 2009 at 11:01 AM 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 More sharing options...
bruno1234 Posted November 22, 2009 at 02:27 PM Report Share #297173 Posted November 22, 2009 at 02:27 PM 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 More sharing options...
nellaf Posted November 22, 2009 at 04:26 PM Author Report Share #297196 Posted November 22, 2009 at 04:26 PM 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 More sharing options...
nellaf Posted November 24, 2009 at 01:47 PM Author Report Share #297401 Posted November 24, 2009 at 01:47 PM Alguém me pode ajudar? Link to comment Share on other sites More sharing options...
M6 Posted November 24, 2009 at 09:40 PM Report Share #297467 Posted November 24, 2009 at 09:40 PM Separar a data da hora e fazes um min e um max às horas e um group by pela data. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now