Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Codigo en sql URGE!!!!

Estas en el tema de Codigo en sql URGE!!!! en el foro de SQL Server en Foros del Web. ¿Alguien sabe cómo puedo realizar este código en sql?: Tengo 2 Tablas distintas: Tabla1, campos: nombre1, fecha1, bloquear Tabla2, campos: nombre2, fecha2 Quiero filtrar la ...
  #1 (permalink)  
Antiguo 27/10/2009, 08:32
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Codigo en sql URGE!!!!

¿Alguien sabe cómo puedo realizar este código en sql?:

Tengo 2 Tablas distintas:
Tabla1, campos: nombre1, fecha1, bloquear
Tabla2, campos: nombre2, fecha2

Quiero filtrar la tabla1 por los bloquear=si
Recorrer todos los registros de la tabla1 hasta el final comprobando para cada registro lo siguiente:
filtrar la tabla2, donde el nombre1=nombre2
SI fecha1>=fecha2 ENTONCES
bloquear=yes
SINO
bloquear=no
FIN

GRACIAS
  #2 (permalink)  
Antiguo 27/10/2009, 11:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Codigo en sql URGE!!!!

Veamos, ¿Que motor de base de datos ocupas?, ¿Porque dices que bloquear puede tener si y luego yes, no?, acaso es una columna char?
  #3 (permalink)  
Antiguo 27/10/2009, 15:29
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Me parece que en el Ansi 92 más sencillo debe ser:

SELECT Tabla1.nombre1, Tabla1.fecha1, Tabla2.nombre2, Tabla2.fecha2,
CASE fecha1
WHEN fecha1 >= fecha2 THEN 'Yes'
ELSE 'No'
END AS BLOQUEADO
FROM
Tabla1 INNER JOIN Tabla2 ON Tabla1.nombre1 = Tabla2.nombre2
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
  #4 (permalink)  
Antiguo 28/10/2009, 03:32
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Utilizo SQL server 2005, para una BD de Microsoft Dynamics NAV (NAVISION).
En verdad en NAvision el campo BLOQUEAR es de tipo "code", en SQL es varchar(3).

Lo que quiero es filtrar la 1ª tabla para obtener todos los registros con el campo "bloquear"='CON'.
Para cada registro buscar según el campo "nombre" de la 1ª tabla en la 2ª tabla y comprobar que la fecha de la 1ª tabla es menor que en la de la 2ª, si es así el campo bloquear se deja igual, si no se cumple la condicion se modificara el campo dejandolo en blanco.

Gracias por contestar, no tengo ni idea de SQL y me estais haciendo un gran favor.

CoNcHi
  #5 (permalink)  
Antiguo 28/10/2009, 04:28
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

He probado tu codigo de la siguiente forma:

USE FITONOVO
SELECT [Buy-from Vendor No_] , [Posting Date], [BLOQUEAR], [Cod Proveedor],[Fecha Inicio Valida],
CASE [Posting Date]
WHEN [Posting Date] >= [Fecha Inicio Valida] THEN 'CON'
ELSE ''
END AS [BLOQUEAR]
FROM
[dbo].[FITONOVO$Purch_ Inv_ Header] INNER JOIN [dbo].[FITONOVO$Datos fichas CALMAS] ON [Buy-from Vendor No_] = [Cod Proveedor]


Pero no me compila por la comparacion de las fechas (>=). Me podeis ayudar????
  #6 (permalink)  
Antiguo 28/10/2009, 09:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Codigo en sql URGE!!!!

No abras nuevas postas, sigue por este hilo.........

Te pregunto:

¿Se cumple dicha condicion?
  #7 (permalink)  
Antiguo 28/10/2009, 10:27
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

hay veces que si y otras veces no
  #8 (permalink)  
Antiguo 28/10/2009, 10:31
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Pero no te preocupes lo acabo de solucionar, lo mismo se puede hacer un codigo mas resumido, pero para no tener ni idea de SQl creo que esta bien, GRACIAS de todas formas el codigo ha quedado así: (Por si os hace falta)

use FITO
DECLARE
@CodigoProv varchar(20),
@FechaRegistro datetime,
@Esperar varchar(20),
@FechaInicio datetime

DECLARE Historico_Cursor CURSOR FOR
SELECT [Buy-from Vendor No_] , [Posting Date]
fROM [FITO$Purch_ Inv_ Header]
WHERE [On Hold] = 'CON' ;
OPEN Historico_Cursor;

FETCH Historico_Cursor INTO @CodigoProv,@FechaRegistro
WHILE @@FETCH_STATUS = 0
BEGIN
declare CALMASS cursor for
SELECT [Fecha Inicio Valida]
FROM [FITO$Datos fichas CALMAS]
WHERE([FITO$Datos fichas CALMAS].[Cod Proveedor]=@CodigoProv);
open CALMASS;
fetch CALMASS into @FechaInicio
IF @FechaRegistro>= @FechaInicio begin
UPDATE [dbo].[FITO$Purch_ Inv_ Header]
SET [On Hold] = ''
WHERE CURRENT OF Historico_Cursor
end
CLOSE CALMASS;
DEALLOCATE CALMASS;
FETCH Historico_Cursor INTO @CodigoProv,@FechaRegistro
END;

CLOSE Historico_Cursor;
DEALLOCATE Historico_Cursor;
GO
  #9 (permalink)  
Antiguo 28/10/2009, 10:34
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Codigo en sql URGE!!!!

Cuidado con el uso de cursores, degradan el nivel de servicio de tu servidor, incluso, pueden llegar a tirarlo si se usan de forma indiscriminada....
  #10 (permalink)  
Antiguo 28/10/2009, 11:19
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Según me dices, ya no estoy tan segura de querer dejarlo como está, ya que este script se va ejecutar diariamente en un cliente nuestro.

El problema es que no sé como hacerlo de otra forma, como te comentaba antes, no se nada de SQL, lo he hecho mirando manuales en internet y foros.

Si hay alguna forma en la que me puedas ayudar con el codigo, te lo agradeceré mucho, gracias de antemano.

CoNcHi
  #11 (permalink)  
Antiguo 28/10/2009, 12:04
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Codigo en sql URGE!!!!

Prueba asi:
Código sql:
Ver original
  1. UPDATE [FITO$Purch_ Inv_ Header] SET [ON Hold] = ''
  2. FROM [FITO$Purch_ Inv_ Header] P
  3. INNER JOIN [FITO$Datos fichas CALMAS] D ON P.[Buy-FROM Vendor No_] = D.[Cod Proveedor]
  4. WHERE P.[ON Hold] = 'CON'
  5. AND P.[Posting DATE] >= D.[Fecha Inicio Valida]
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #12 (permalink)  
Antiguo 28/10/2009, 18:09
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

¿Qué error te da?
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
  #13 (permalink)  
Antiguo 29/10/2009, 03:06
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

No me reconoce la variable [Fecha Inicio Valida], pero no te preocupes
  #14 (permalink)  
Antiguo 29/10/2009, 03:21
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Muchísimas gracias Flaviovich,
funciona igual que el mio, pero es muchísimo más corto.

¡ESTA PERFECTO!!! Gracias

CoNcHi
  #15 (permalink)  
Antiguo 29/10/2009, 04:43
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Problemas....
Tengo que añadir más código al script anterior,jeje!! es el siguiente:

Si se ha llegado a modificar en algun momento el campo [on hold], debo filtrar otra tabla, llamada TAREAS, la cual contiene una serie de tareas asignadas a un ID de tablas de la BD (Puede haber varios registros con el mismo ID tabla).

En la tabla tareas debemos buscar si existe registros que contenga el ID 122 que corresponde con la tabla [Purch. Inv. Header], y si existe debo modificar el campo Estado=TERMINADO.

Me podeis ayudar????
  #16 (permalink)  
Antiguo 29/10/2009, 09:38
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Codigo en sql URGE!!!!

Tienes que hacer 2 cosas:
1. agregar:
Código SQL:
Ver original
  1. WHERE ...
  2. AND EXISTS(... WHERE <aqui el JOIN entre [Purch. Inv. Header] y Tareas> AND ID=122)
2. agregar:
Código sql:
Ver original
  1. SET ... , Estado='TERMINADO'
Si te lo doy hecho nunca aprendarás, asi ponte a leer sobre EXISTS.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #17 (permalink)  
Antiguo 30/10/2009, 03:54
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Lo siento mucho, pero como ya te dije no tengo ni idea de SQL, sólo llevo 2 dias con esto, y me salen errores de todo tipo creo que no lo estoy agregando bien.

Ya sé que debo empollar bastante, pero en mi curro me mandan que lo haga aunque no tenga ni idea, y como comprenderas me tengo que buscar la forma más rápida de hacerlo.

Muchisimas gracias por ayudarme.
  #18 (permalink)  
Antiguo 30/10/2009, 05:51
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Como no he entendido muy bien donde lo tenia que agragar, lo he dejado de la siguiente forma que si me funciona (lo que pasa es que estoy repitiendo dos veces el mismo código, uno para hacer la consulta y otro que modifica el campo [On Hold]):

USE FITO
UPDATE [FITO$Tareas pendientes] SET estado=1
WHERE IDTabla='122'
and exists (select *
FROM [FITO$Purch_ Inv_ Header] P2
INNER JOIN [FITO$Datos fichas] D2 ON P2.[Buy-FROM Vendor No_] = D2.[Cod Proveedor]
WHERE P2.[ON Hold] = 'CON'
AND P2.[Posting Date] >= D2.[Fecha Inicio Valida]);

UPDATE [FITO$Purch_ Inv_ Header] SET [ON Hold] = ''
FROM [FITO$Purch_ Inv_ Header] P
INNER JOIN [FITO$Datos fichas] D ON P.[Buy-FROM Vendor No_] = D.[Cod Proveedor]
WHERE P.[ON Hold] = 'CON'

AND P.[Posting Date] >= D.[Fecha Inicio Valida]
  #19 (permalink)  
Antiguo 30/10/2009, 08:32
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Codigo en sql URGE!!!!

Yo te habla de esto:
Código sql:
Ver original
  1. UPDATE [FITO$Purch_ Inv_ Header]
  2. SET [ON Hold] = '', Estado=1
  3. FROM [FITO$Purch_ Inv_ Header] P
  4. INNER JOIN [FITO$Datos fichas CALMAS] D ON P.[Buy-FROM Vendor No_] = D.[Cod Proveedor]
  5. WHERE P.[ON Hold] = 'CON'
  6. AND P.[Posting DATE] >= D.[Fecha Inicio Valida]
  7. AND EXISTS(SELECT 1 FROM [FITO$Tareas pendientes] T WHERE P.IdTarea = T.Id AND IDTabla=122)
No se si será lo que necesitas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Última edición por flaviovich; 30/10/2009 a las 09:33
  #20 (permalink)  
Antiguo 30/10/2009, 09:21
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

ME SALE EL SIGUIENTE ERROR:

Msg 156, Level 15, State 1, Line 2
Sintaxis incorrecta cerca de la palabra clave 'SET'.
  #21 (permalink)  
Antiguo 30/10/2009, 09:28
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

No me has entendido. Una vez que he modificado la tabla Purch Invoice Header, si se ha modificado algun registro debo ir a la tabla Tareas y filtrar por IdTabla='122', ya que no hay ningun campo que tenga que relacionar entre las dos tablas. Y si encuentro algun registro que cumpla dicha condicion se modificara el campo Estado=1.
  #22 (permalink)  
Antiguo 30/10/2009, 09:29
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

ah!! El campo Estado pertenece a la tabla Tareas no a la "Purch Invoice Header".
  #23 (permalink)  
Antiguo 30/10/2009, 09:33
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Codigo en sql URGE!!!!

Cita:
Iniciado por cbeltran Ver Mensaje
ME SALE EL SIGUIENTE ERROR:

Msg 156, Level 15, State 1, Line 2
Sintaxis incorrecta cerca de la palabra clave 'SET'.
Había un SET demás.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #24 (permalink)  
Antiguo 30/10/2009, 09:54
 
Fecha de Ingreso: octubre-2009
Ubicación: Sevilla, España
Mensajes: 35
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Codigo en sql URGE!!!!

Lee los 2 post anteriores porfa ...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:25.