SELECT OR UPDATE

USUARIO.EXCLUIDOS 26/04/2007 15:32:06
#213894
boa tarde..(base access)

possuo uma tabela com registro dos usuario com a data e o servico feito...precisava atualizar uns dados e fiz essa sql:

SELECT responsible, [hour], he50, he100, data
FROM Pubs_Hour
WHERE (((Pubs_Hour.data)=#4/3/2007# Or (Pubs_Hour.data)=#4/5/2007#));

so q retorna os usuarios preenchidos nao exatamente nos dois dias e sim em um ou outro, ou ambos. se coloco um and no lugar do or nao retorna nenhum usuario...e preciso q me retorne qm possue horas nos dois dias

isso td pq preciso na verdade de um update q vai fazer o seguinte....... somar o he50 + [hour] e colocar a soma em he100, desde q o usuario possua horas em 04/03 E 04/05...

consigo montar um update query desse jeito, senao como faco pelo menos o select disso q quero??
TAMANINI 26/04/2007 15:37:02
#213896
Utilize o BetWeen:
... WHERE Pubs_Hour.data BETWEEN #4/3/2007# AND #4/5/2007#
USUARIO.EXCLUIDOS 26/04/2007 15:40:00
#213897
SELECT responsible, [hour], he50, he100, data
FROM Pubs_Hour
WHERE Pubs_Hour.data between #4/3/2007# and #4/5/2007#

USUARIO.EXCLUIDOS 26/04/2007 15:46:25
#213900
acho q nao expliquei direito

tabela Pubs_Hour

responsible [hour] he50 he100 data
bruno 8 1 0 04/05/07
bruno 8 0 0 04/03/07
carol 8 0 0 04/05/07
mariana 8 0 0 04/05/07
mariana 8 0 0 04/03/07




queria q retornasse somente bruno e mariana.....
USUARIO.EXCLUIDOS 26/04/2007 15:50:50
#213901
Resposta escolhida
BGONCALVES, segue um modelinho que fiz, espero que ajude!

Para efetuar a soma, basta fazer assim:

UPDATE Pubs_Hour
SET he100 = hour + he50
WHERE data =#3/4/2007# Or data=#5/4/2007#;

Como não sabia o tipo de dato dos campos (hour,he50,he100), coloquei como Data/Hora, mas basta você mudar o tipo de dado, que vai funcionar do mesmo jeito!

Bom, levei em consideração, somente essas duas datas, agora se quiser pegar quem está nessas datas e entre elas, utilize o BETWEEN, conforme exemplo acima, do nosso colega!

TAMANINI 26/04/2007 15:57:40
#213904
Agora eu não entendi, você quer que retorne os nomes bruno e mariana por uma das datas 04/03/2007 Ou 04/05/2007, certo? Se sim irá retornar também o da Carol, pois a data cadastrada no da Carol também é 04/05/07.
USUARIO.EXCLUIDOS 26/04/2007 16:01:11
#213905
entao...eu quero q retorne quem possua dados em 04/03/2007 E 04/05/2007, no caso bruno e mariana, nao quero q retorne a carol pq ela SOMENTE possue dados 04/05/2007.
preciso somente dos usuarios com dados nas duas datas...e nao somente em uma das duas....
USUARIO.EXCLUIDOS 26/04/2007 16:02:56
#213906
obrigado piolho, mas no seu exemplo nao retorna somente qm possua dados nas duas datas e sim em qqr uma das duas ou ambas....
USUARIO.EXCLUIDOS 26/04/2007 16:17:56
#213907
Matei a charada!!! rs.

SELECT PH1.responsible, PH1.hour, PH1.he50, PH1.he100, PH1.data
FROM Pubs_Hour AS PH1
WHERE Exists(SELECT responsible FROM Pubs_Hour PH2 WHERE PH2.data = #3/4/2007# OR PH2.data = #5/4/2007# AND PH1.responsible = PH2.responsible GROUP BY PH2.responsible HAVING COUNT(PH2.responsible) > 1);

Nessa consulta acima, ele vai retornar o nome duplicado, exibindo o correspondente as datas, mas para exibir somente uma vez, você pode fazer assim:

SELECT DISTINCT PH1.responsible
FROM Pubs_Hour AS PH1
WHERE Exists(SELECT responsible FROM Pubs_Hour PH2 WHERE PH2.data = #3/4/2007# OR PH2.data = #5/4/2007# AND PH1.responsible = PH2.responsible GROUP BY PH2.responsible HAVING COUNT(PH2.responsible) > 1);

USUARIO.EXCLUIDOS 26/04/2007 16:32:08
#213908
infelizmente ainda nao, esta me retornando todos os registros, ou seja, toda a tabela...
USUARIO.EXCLUIDOS 26/04/2007 16:34:20
#213910
foi mal, postei antes de ver o outro anexo...

valeu piolho
Tópico encerrado , respostas não são mais permitidas