Como trabajo principalmente en otros lenguajes, conozco muy someramente el
lenguaje del SQL. Quisiera poder ejecutar una orden con el siguiente criterio
(muy simple)
“Si no existe en la tabla [ApplyCollection] un registro con claves ID=ALGO,
y ID2=333, créelo, de lo contrario actualice solo el campo UpdateTime con la
fecha / hora del servidor.
En primera instancia se me ocurre:
if (select * from [ApplyCollection] where ID1='ALGO' and ID2=333)=0
insert into [ApplyCollection] (ID1,ID2,UpdateTime)
values ('ALGO',333,(select { fn now() }))
else
update [_ApplyCollection] set UpdateTime=(select { fn now() })
Me devuelve el error:
Subqueries are not allowed in this context. Only scalar expressions are
allowed.
--
Segunda pregunta. Quisiera contar los registros que no se repiten en una
tabla. Se me ocurre algo simple como:
select count(*) from (select distinct * from [TableName])
Me devuelve error de sintaxis (que ignorancia la mía) ¿Cómo en una sola
genciana SQL obtengo los registros que no se repiten?
Agradeceré hasta la luna su sabios consejos...
En la segunda, la soluci�n que se te ocurre es valida, solo que T-SQL
requiere que la subconsulta tenga un alias:
select count(*) from (select distinct * from [TableName]) AS x
Saludos,
Juan Carlos Leguizamon
"Juan Marcial" <eslend...@hotmail.com> escribi� en el mensaje
news:A00D041B-C511-4553...@microsoft.com...
> Buenas-
>
> Como trabajo principalmente en otros lenguajes, conozco muy someramente el
> lenguaje del SQL. Quisiera poder ejecutar una orden con el siguiente
> criterio
> (muy simple)
>
> "Si no existe en la tabla [ApplyCollection] un registro con claves
> ID=ALGO,
> y ID2=333, cr�elo, de lo contrario actualice solo el campo UpdateTime con
> la
> fecha / hora del servidor.
>
> En primera instancia se me ocurre:
>
> if (select * from [ApplyCollection] where ID1='ALGO' and ID2=333)=0
> insert into [ApplyCollection] (ID1,ID2,UpdateTime)
> values ('ALGO',333,(select { fn now() }))
> else
> update [_ApplyCollection] set UpdateTime=(select { fn now() })
>
> Me devuelve el error:
> Subqueries are not allowed in this context. Only scalar expressions are
> allowed.
>
> --
>
> Segunda pregunta. Quisiera contar los registros que no se repiten en una
> tabla. Se me ocurre algo simple como:
>
> select count(*) from (select distinct * from [TableName])
>
> Me devuelve error de sintaxis (que ignorancia la m�a) �C�mo en una sola
> genciana SQL obtengo los registros que no se repiten?
>
> Agradecer� hasta la luna su sabios consejos...
>
>
<intento actualizar>
<si no ha actualizado ninguna fila, es que no existe>
<por tanto, inserto>
UPDATE [_ApplyCollection] SET UpdateTime = GETDATE() WHERE ID1='ALGO' AND
ID2=333
IF @@ROWCOUNT = 0
INSERT INTO [ApplyCollection] (ID1,ID2,UpdateTime)
VALUES ('ALGO', 333, GETDATE())
--
-----------------------------
"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático
"Juan Marcial" <eslend...@hotmail.com> wrote in message
news:A00D041B-C511-4553...@microsoft.com...
Solo una preguntita más ¿Que es mas eficiente en rendimiento?
(1)
IF EXISTS (SELECT 1 FROM ApplyCollection WHERE ID1='ALGO' And ID2=333) ...
(2)
IF (SELECT COUNT(*) FROM ApplyCollection WHERE ID1='ALGO' And ID2=333)=0 ...
Bueno, imagino que la (1)...
Muchas gracias.
--
Juan Marcial
Ingeniero de Software
Pero. Esto:
<intento actualizar>
<si no ha actualizado ninguna fila, es que no existe>
<por tanto, inserto>
¿En termininos de T-SQ como es?
--
Juan Marcial
Ingeniero de Software
"Carlos Sacristan" wrote:
> .
>
--
-----------------------------
"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático
"Juan Marcial" <eslend...@hotmail.com> wrote in message
news:A2528329-ED02-4343...@microsoft.com...
Una cosa a tener en cuenta: ambas condiciones son contrarias. La primera es
verdadera si existe algún registro que cumpla esas condiciones; la segunda
es válida si NINGÚN registro cumple esas condiciones.
--
-----------------------------
"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático
"Juan Marcial" <eslend...@hotmail.com> wrote in message
news:2894DBC8-51EC-49B8...@microsoft.com...
"Juan Marcial" <eslend...@hotmail.com> escribió en el mensaje de
noticias:A00D041B-C511-4553...@microsoft.com...
--
-----------------------------
"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático
"Jose Antonio Martínez" <jama...@hotmail.com> wrote in message
news:712D87D5-B88E-49EC...@microsoft.com...