SQL - Eliminar datos usando datos de otra tabla

 
Vista:

Eliminar datos usando datos de otra tabla

Publicado por Alejandro (2 intervenciones) el 27/03/2012 12:53:35
Tengo una base de datos en la que tenemos usuarios registrados, y cada usuario tiene a su disposicion una serie de bibliotecas, y dentro de ellas un grupos de imagenes, mi intencion es:

Seleccionar los usuarios cuya ultima conexion (ultimo_on) fuese del 31 de Septiembre de 2011
Con esa seleccion, borrar las bibliotecas cuyo dueño (nombredueño) sea igual al de los seleccionados anteriormente
y también, borrar las imagenes cuyo dueño (id_dueño) sea la de los seleccionados;

Vamos, quiero hacer una limpieza de datos eliminando las cosas de los usuarios que ya no entran.
Como podría hacerlo mas o menos...?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Eliminar datos usando datos de otra tabla

Publicado por Alejandro (2 intervenciones) el 27/03/2012 12:59:09
He probado con DELETE * FROM bibliotecas WHERE nombredueño = (SELECT name FROM usuarios WHERE ultimo_on <= (UNIXTIMESTAMP - 6) <-- Se k eso esta mal

De todas formas no me funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar datos usando datos de otra tabla

Publicado por Leopoldo Taylhardat (93 intervenciones) el 27/03/2012 13:12:27
Saludos.
No se con que bd trabajas pero debes hacer algo así...

DELETE * FROM bibliotecas WHERE nombredueño in (SELECT name FROM usuarios WHERE max(ultimo_on) <= dateadd(day,-6,today()))

Esto es con TransactSQL (Sybase y SQLServer)
debes tomar la fecha máxima de entrada y restarle (en este caso) 6 dias a la fecha...
DATEADD ( date-part, numeric-expr, date-expr ) Returns the date produced by adding the specified number of the specified date parts to the date. The numeric_expression can be any numeric type; the value is truncated to an integer. For example, the following statement displays 1995-11-02 00:00:00.000.

SELECT dateadd( month, 102, '1987/05/02' )
Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar