[C con Clase] Otra duda sobre SQL.

MuGliDaRk muglidark en gmail.com
Lun Ago 23 21:50:46 CEST 2010


Primeramente, no tienen sentido almacenar el mis dato 2 veces, creo que eso
esta fuera de lugar en lo que se puede llamar una BD.

segundo... yo usaria un trigguer..

un ejemplo, segun lo que entiendo de tu esquema.

CREATE TRIGGER xpsc
ON dbo.Table2
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
-----Insertar Rutina---------------
declare @total int
Select @total= count(*) from inserted WHERE tmin<20
IF @total>0
BEGIN
UPDATE TABLE1
SET tmenor=tmenor +1
END

Select @total= count(*) from inserted WHERE tmin>20
IF @total>0
BEGIN
UPDATE TABLE1
SET tmenor=tmenor +1
END

RAISERROR ('Mensage de TrMateriales',16,1)
ROLLBACK TRAN
------Fin de rutina-----------------
END

Yo pedia esquematizar mejor tu problema.




El 23 de agosto de 2010 13:08, Jorge Vega Sanchez
<memmaker650 en gmail.com>escribió:

> Bien este lista de correo esta llena de gente muy competente también en
> SQL.
>
> Pongo otra pregunta:
> Tengo una tabla con 4 columnas( id, nombre, tmin, tmax) todas integer
> excepto nombre que varchar.
> En estas id y nombre ya las he completado con los valores que tienen que
> llevar, cada nombre tiene un id diferente.
>
> Ahora tengo dos tablas auxiliares que tienen la siguiente estructura: id y
> tpeq y la otra id y tgran.
>
> Tengo que actualizar la columna tmin de la principal con los valores tpeq
> cuando conincidan los id de ambas tablas, dado que no hay valores para todos
> los ids.
> Para tmax de la tabla principal lo mismo, tomar los valores de la tabla
> auxiliar y escribirlos en la principal cuando los id coincidan.
>
> Pongo las instrucciones que tengo.
>
> CREATE TABLE FINAL (idLocal INTEGER, nombre VARCHAR(10), tmenor INTEGER 0,
> tmayor INTEGER 0);
> INSERT INTO FINAL(idLocal, nombre) SELECT id, nombre FROM localidad;
> /* FUNCIONA */
> DROP TABLE INTER1;
> DROP TABLE INTER2;
> CREATE TABLE INTER1 AS SELECT idLocal, COUNT(tmin) "tpeq" FROM temperatura
> WHERE tmin<20 GROUP BY idLocal;
> CREATE TABLE INTER2 AS SELECT idLocal, COUNT(tmin) "tgran" FROM temperatura
> WHERE tmin>20 GROUP BY idLocal;
> UPDATE FINAL SET tmenor=(SELECT tpeq FROM INTER1) WHERE
> idLocal=INTER1.idLocal   *<-- NO FUNCIONA PERO CREO QUE LA INSTRUCCION
> DEBE SER DEL ESTILO.*
>
> Gracias de antemano.
>
> Un saludo.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Atte.
_______________________________


_______________________________

*Antes de imprimir este mensaje, asegúrese de que sea necesario. Proteger el
medio ambiente está en nuestras manos.
Before you print this message, make sure it is necessary. It is in our hands
to protect our environment.
*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100823/1d7aa2a2/attachment.html>


Más información sobre la lista de distribución Cconclase