Update de contar varios registos de T1 a T2

23/04/2005 - 20:04 por J Lara | Informe spam
Tengo una consulta de 2 tablas, una tabla
es de clientes(T1.C1), y el campo que me interesa
es la cantidad de que veces nos visita, en la
segunda tabla (T2.C2) hay un campo que
se debe actualizar en forma manual anotando
el total de visitas que tuvo, osea que
si nos visito toda la semana en el T1,C1
debe haber 6 registros con el dato 1 en cada dia,
y en la T2.C2 se debe anotar el 6, Esto no siempre esta
actualizado y deseo ejecutar un update
para hacerlo automaticamente, el siguiente
script me actaliza ese dato pero en forma
erronea ya que me anota todas las visitas
de todos los clientes en todos los campos
de la tabla2 (T2.C2)
Osea si en total hubiera 10 clientes con 6
visitas cada uno a la semana me anota
el dato 60 en cada uno de los codigos de
clientes (T2.C2` repetido en todos)

Este es el Script erroneo:

update T1 set C1=(SELECT Count(T2.C2) FROM T2 T2
WHERE (T2.C2=1 and T2.C3 {ID}='X'))
where T1.C3 {ID}='X'

Como le haria para que el cliente 1 me le
anote sus visitas en la tabla2 y el cliente
2 en su respectiva registros y asi sucecivamente.
cabe mencionar que T1.C1 es el campo donde
saco el count para enviar a T2.C2 y el C3
es el ID.

Mil gracias por su apoyo.

Saludos.

Preguntas similare

Leer las respuestas

#6 J Lara
26/04/2005 - 17:05 | Informe spam
Alejandro, estoy utilizando la primer sentencia que me sugeriste:

update t2
set c2 = (select sum(t1.c1) from t1 where t1.[id] = t2.[id])
where t2.[id] = 'x'

Gracias por tu ayuda.

Saludos



"Alejandro Mesa" escribió:

J Lara,

Puedes postear la sentencia update que estas usando?


AMB

"J Lara" wrote:

> Alejandro y Maxi, gracias por su sugerencia, estoyp probando
> pero recibo un error "Attempt to insert null Value into
> colum C1, table T1; column does not allow nulls".
>
> aunque reviso los datos que deben insertarse y no encuentro
> ningun valor nulo.
>
> podran ayudarme en esto ??
>
> Gracias de antemano.
>
> Saludos.
>
>
> "Alejandro Mesa" escribió:
>
> > Trata,
> >
> > update t2
> > set c2 = (select sum(t1.c1) from t1 where t1.[id] = t2.[id])
> > where t2.[id] = 'x'
> >
> >
> > update t2
> > set c2 = (select sum(t1.c1) from t1 where t1.[id] = 'x')
> > where t2.[id] = 'x'
> >
> >
> > AMB
> >
> >
> > "J Lara" wrote:
> >
> > > Tengo una consulta de 2 tablas, una tabla
> > > es de clientes(T1.C1), y el campo que me interesa
> > > es la cantidad de que veces nos visita, en la
> > > segunda tabla (T2.C2) hay un campo que
> > > se debe actualizar en forma manual anotando
> > > el total de visitas que tuvo, osea que
> > > si nos visito toda la semana en el T1,C1
> > > debe haber 6 registros con el dato 1 en cada dia,
> > > y en la T2.C2 se debe anotar el 6, Esto no siempre esta
> > > actualizado y deseo ejecutar un update
> > > para hacerlo automaticamente, el siguiente
> > > script me actaliza ese dato pero en forma
> > > erronea ya que me anota todas las visitas
> > > de todos los clientes en todos los campos
> > > de la tabla2 (T2.C2)
> > > Osea si en total hubiera 10 clientes con 6
> > > visitas cada uno a la semana me anota
> > > el dato 60 en cada uno de los codigos de
> > > clientes (T2.C2` repetido en todos)
> > >
> > > Este es el Script erroneo:
> > >
> > > update T1 set C1=(SELECT Count(T2.C2) FROM T2 T2
> > > WHERE (T2.C2=1 and T2.C3 {ID}='X'))
> > > where T1.C3 {ID}='X'
> > >
> > > Como le haria para que el cliente 1 me le
> > > anote sus visitas en la tabla2 y el cliente
> > > 2 en su respectiva registros y asi sucecivamente.
> > > cabe mencionar que T1.C1 es el campo donde
> > > saco el count para enviar a T2.C2 y el C3
> > > es el ID.
> > >
> > > Mil gracias por su apoyo.
> > >
> > > Saludos.
> > >
> > >
Respuesta Responder a este mensaje
#7 J Lara
26/04/2005 - 19:04 | Informe spam
Alejandro, por favor ignora el comentario anterior ya que
la consulta ya me salio OK, te comento que principalmente
la modificacion que le hice fue quitar el sum y
agregar el count

Te agradesco tu ayuda ya que no lo hubiera sacado
yo solo.

Gracias.

Saludos.

"Alejandro Mesa" escribió:

J Lara,

Puedes postear la sentencia update que estas usando?


AMB

"J Lara" wrote:

> Alejandro y Maxi, gracias por su sugerencia, estoyp probando
> pero recibo un error "Attempt to insert null Value into
> colum C1, table T1; column does not allow nulls".
>
> aunque reviso los datos que deben insertarse y no encuentro
> ningun valor nulo.
>
> podran ayudarme en esto ??
>
> Gracias de antemano.
>
> Saludos.
>
>
> "Alejandro Mesa" escribió:
>
> > Trata,
> >
> > update t2
> > set c2 = (select sum(t1.c1) from t1 where t1.[id] = t2.[id])
> > where t2.[id] = 'x'
> >
> >
> > update t2
> > set c2 = (select sum(t1.c1) from t1 where t1.[id] = 'x')
> > where t2.[id] = 'x'
> >
> >
> > AMB
> >
> >
> > "J Lara" wrote:
> >
> > > Tengo una consulta de 2 tablas, una tabla
> > > es de clientes(T1.C1), y el campo que me interesa
> > > es la cantidad de que veces nos visita, en la
> > > segunda tabla (T2.C2) hay un campo que
> > > se debe actualizar en forma manual anotando
> > > el total de visitas que tuvo, osea que
> > > si nos visito toda la semana en el T1,C1
> > > debe haber 6 registros con el dato 1 en cada dia,
> > > y en la T2.C2 se debe anotar el 6, Esto no siempre esta
> > > actualizado y deseo ejecutar un update
> > > para hacerlo automaticamente, el siguiente
> > > script me actaliza ese dato pero en forma
> > > erronea ya que me anota todas las visitas
> > > de todos los clientes en todos los campos
> > > de la tabla2 (T2.C2)
> > > Osea si en total hubiera 10 clientes con 6
> > > visitas cada uno a la semana me anota
> > > el dato 60 en cada uno de los codigos de
> > > clientes (T2.C2` repetido en todos)
> > >
> > > Este es el Script erroneo:
> > >
> > > update T1 set C1=(SELECT Count(T2.C2) FROM T2 T2
> > > WHERE (T2.C2=1 and T2.C3 {ID}='X'))
> > > where T1.C3 {ID}='X'
> > >
> > > Como le haria para que el cliente 1 me le
> > > anote sus visitas en la tabla2 y el cliente
> > > 2 en su respectiva registros y asi sucecivamente.
> > > cabe mencionar que T1.C1 es el campo donde
> > > saco el count para enviar a T2.C2 y el C3
> > > es el ID.
> > >
> > > Mil gracias por su apoyo.
> > >
> > > Saludos.
> > >
> > >
Respuesta Responder a este mensaje
#8 Alejandro Mesa
26/04/2005 - 22:12 | Informe spam
J Lara,

Que bueno que pudistes dar con el error.

Suerte,

AMB

"J Lara" wrote:

Alejandro, por favor ignora el comentario anterior ya que
la consulta ya me salio OK, te comento que principalmente
la modificacion que le hice fue quitar el sum y
agregar el count

Te agradesco tu ayuda ya que no lo hubiera sacado
yo solo.

Gracias.

Saludos.

"Alejandro Mesa" escribió:

> J Lara,
>
> Puedes postear la sentencia update que estas usando?
>
>
> AMB
>
> "J Lara" wrote:
>
> > Alejandro y Maxi, gracias por su sugerencia, estoyp probando
> > pero recibo un error "Attempt to insert null Value into
> > colum C1, table T1; column does not allow nulls".
> >
> > aunque reviso los datos que deben insertarse y no encuentro
> > ningun valor nulo.
> >
> > podran ayudarme en esto ??
> >
> > Gracias de antemano.
> >
> > Saludos.
> >
> >
> > "Alejandro Mesa" escribió:
> >
> > > Trata,
> > >
> > > update t2
> > > set c2 = (select sum(t1.c1) from t1 where t1.[id] = t2.[id])
> > > where t2.[id] = 'x'
> > >
> > >
> > > update t2
> > > set c2 = (select sum(t1.c1) from t1 where t1.[id] = 'x')
> > > where t2.[id] = 'x'
> > >
> > >
> > > AMB
> > >
> > >
> > > "J Lara" wrote:
> > >
> > > > Tengo una consulta de 2 tablas, una tabla
> > > > es de clientes(T1.C1), y el campo que me interesa
> > > > es la cantidad de que veces nos visita, en la
> > > > segunda tabla (T2.C2) hay un campo que
> > > > se debe actualizar en forma manual anotando
> > > > el total de visitas que tuvo, osea que
> > > > si nos visito toda la semana en el T1,C1
> > > > debe haber 6 registros con el dato 1 en cada dia,
> > > > y en la T2.C2 se debe anotar el 6, Esto no siempre esta
> > > > actualizado y deseo ejecutar un update
> > > > para hacerlo automaticamente, el siguiente
> > > > script me actaliza ese dato pero en forma
> > > > erronea ya que me anota todas las visitas
> > > > de todos los clientes en todos los campos
> > > > de la tabla2 (T2.C2)
> > > > Osea si en total hubiera 10 clientes con 6
> > > > visitas cada uno a la semana me anota
> > > > el dato 60 en cada uno de los codigos de
> > > > clientes (T2.C2` repetido en todos)
> > > >
> > > > Este es el Script erroneo:
> > > >
> > > > update T1 set C1=(SELECT Count(T2.C2) FROM T2 T2
> > > > WHERE (T2.C2=1 and T2.C3 {ID}='X'))
> > > > where T1.C3 {ID}='X'
> > > >
> > > > Como le haria para que el cliente 1 me le
> > > > anote sus visitas en la tabla2 y el cliente
> > > > 2 en su respectiva registros y asi sucecivamente.
> > > > cabe mencionar que T1.C1 es el campo donde
> > > > saco el count para enviar a T2.C2 y el C3
> > > > es el ID.
> > > >
> > > > Mil gracias por su apoyo.
> > > >
> > > > Saludos.
> > > >
> > > >
Respuesta Responder a este mensaje
#9 Alejandro Mesa
26/04/2005 - 22:20 | Informe spam
J Lara,

La diferencia de usar COUNT repecto a SUM (en este caso), es que COUNT
siempre devuelve un valor, en caso de que no exista ninguna fila asociada
entonces devolvera cero, a diferencia de count, sum devolvera null.

Ejemplo:

select count(colA), sum(colA)
from (select 1, 1 union all select 1, 2) as t(colA, colB)
where colB = 3;


AMB

"Alejandro Mesa" wrote:

J Lara,

Que bueno que pudistes dar con el error.

Suerte,

AMB

"J Lara" wrote:

> Alejandro, por favor ignora el comentario anterior ya que
> la consulta ya me salio OK, te comento que principalmente
> la modificacion que le hice fue quitar el sum y
> agregar el count
>
> Te agradesco tu ayuda ya que no lo hubiera sacado
> yo solo.
>
> Gracias.
>
> Saludos.
>
> "Alejandro Mesa" escribió:
>
> > J Lara,
> >
> > Puedes postear la sentencia update que estas usando?
> >
> >
> > AMB
> >
> > "J Lara" wrote:
> >
> > > Alejandro y Maxi, gracias por su sugerencia, estoyp probando
> > > pero recibo un error "Attempt to insert null Value into
> > > colum C1, table T1; column does not allow nulls".
> > >
> > > aunque reviso los datos que deben insertarse y no encuentro
> > > ningun valor nulo.
> > >
> > > podran ayudarme en esto ??
> > >
> > > Gracias de antemano.
> > >
> > > Saludos.
> > >
> > >
> > > "Alejandro Mesa" escribió:
> > >
> > > > Trata,
> > > >
> > > > update t2
> > > > set c2 = (select sum(t1.c1) from t1 where t1.[id] = t2.[id])
> > > > where t2.[id] = 'x'
> > > >
> > > >
> > > > update t2
> > > > set c2 = (select sum(t1.c1) from t1 where t1.[id] = 'x')
> > > > where t2.[id] = 'x'
> > > >
> > > >
> > > > AMB
> > > >
> > > >
> > > > "J Lara" wrote:
> > > >
> > > > > Tengo una consulta de 2 tablas, una tabla
> > > > > es de clientes(T1.C1), y el campo que me interesa
> > > > > es la cantidad de que veces nos visita, en la
> > > > > segunda tabla (T2.C2) hay un campo que
> > > > > se debe actualizar en forma manual anotando
> > > > > el total de visitas que tuvo, osea que
> > > > > si nos visito toda la semana en el T1,C1
> > > > > debe haber 6 registros con el dato 1 en cada dia,
> > > > > y en la T2.C2 se debe anotar el 6, Esto no siempre esta
> > > > > actualizado y deseo ejecutar un update
> > > > > para hacerlo automaticamente, el siguiente
> > > > > script me actaliza ese dato pero en forma
> > > > > erronea ya que me anota todas las visitas
> > > > > de todos los clientes en todos los campos
> > > > > de la tabla2 (T2.C2)
> > > > > Osea si en total hubiera 10 clientes con 6
> > > > > visitas cada uno a la semana me anota
> > > > > el dato 60 en cada uno de los codigos de
> > > > > clientes (T2.C2` repetido en todos)
> > > > >
> > > > > Este es el Script erroneo:
> > > > >
> > > > > update T1 set C1=(SELECT Count(T2.C2) FROM T2 T2
> > > > > WHERE (T2.C2=1 and T2.C3 {ID}='X'))
> > > > > where T1.C3 {ID}='X'
> > > > >
> > > > > Como le haria para que el cliente 1 me le
> > > > > anote sus visitas en la tabla2 y el cliente
> > > > > 2 en su respectiva registros y asi sucecivamente.
> > > > > cabe mencionar que T1.C1 es el campo donde
> > > > > saco el count para enviar a T2.C2 y el C3
> > > > > es el ID.
> > > > >
> > > > > Mil gracias por su apoyo.
> > > > >
> > > > > Saludos.
> > > > >
> > > > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida