SELECT OR UPDATE
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??
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??
Utilize o BetWeen:
... WHERE Pubs_Hour.data BETWEEN #4/3/2007# AND #4/5/2007#
... WHERE Pubs_Hour.data BETWEEN #4/3/2007# AND #4/5/2007#
SELECT responsible, [hour], he50, he100, data
FROM Pubs_Hour
WHERE Pubs_Hour.data between #4/3/2007# and #4/5/2007#
FROM Pubs_Hour
WHERE Pubs_Hour.data between #4/3/2007# and #4/5/2007#
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.....
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.....
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!
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!
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.
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....
preciso somente dos usuarios com dados nas duas datas...e nao somente em uma das duas....
obrigado piolho, mas no seu exemplo nao retorna somente qm possua dados nas duas datas e sim em qqr uma das duas ou ambas....
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);
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);
infelizmente ainda nao, esta me retornando todos os registros, ou seja, toda a tabela...
foi mal, postei antes de ver o outro anexo...
valeu piolho
valeu piolho
Tópico encerrado , respostas não são mais permitidas