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

Sacar editoriales sin actualizar

Estas en el tema de Sacar editoriales sin actualizar en el foro de Bases de Datos General en Foros del Web. Necesito hacer la siguiente consulta y no consigo como. Necesito obtener el listado de editoriales donde NINGUNO de sus libros fueron actualizados. Cuando se actualiza ...
  #1 (permalink)  
Antiguo 19/01/2007, 06:48
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 4 meses
Puntos: 0
Sacar editoriales sin actualizar

Necesito hacer la siguiente consulta y no consigo como.

Necesito obtener el listado de editoriales donde NINGUNO de sus libros fueron actualizados. Cuando se actualiza un libro, se modifica un campo fecha en su registro. Si el campo fecha es igual a 0000-00-00 es por que el libro nunca fue actualizado.

La BD es MySQL y las estructuras de las dos tablas que forman parte de esto es

Tabla EDITORIALES
IdEditorial
Nombre

Tabla LIBROS
ISBN
Título
IdEditorial
Fecha

Quería remarcar que, en cualquier editorial, puede tener varios libros con fecha 0000-00-00 y otros tantos con una fecha cierta (2007-01-17), por lo cual habría que asegurarse que TODOS los libros de cada editorial tenga sus libros en 0000-00-00.

Gracias
  #2 (permalink)  
Antiguo 19/01/2007, 08:40
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Sacar editoriales sin actualizar

En Oracle se podría hacer algo así:

Código:
Select idEditorial,Nombre
from Editoriales e
where not exists (select 1 from libros l where l.idEditorial=e.IdEditorial
                         and Fecha<>'0000-00-00')
  #3 (permalink)  
Antiguo 19/01/2007, 09:33
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Sacar editoriales sin actualizar

Cita:
Iniciado por seanchan Ver Mensaje
En Oracle se podría hacer algo así:

Código:
Select idEditorial,Nombre
from Editoriales e
where not exists (select 1 from libros l where l.idEditorial=e.IdEditorial
                         and Fecha<>'0000-00-00')
No se que es el 1 en el select.
Pero ya probé eso (sin el 1, claro) y me trae todas las editoriales por que, como comentaba antes, seguramente casi todas las editoriales tengan uno o mas libros con la fecha en 0000-00-00. Lo que yo necesito es traer las editoriales que tengan TODOS sus libros con fecha 0000-00-00,... o lo que es lo mismo, traer las editoriales donde NINGUNO de sus libros tenga como fecha algo diferente a 0000-00-00.
  #4 (permalink)  
Antiguo 19/01/2007, 10:10
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Sacar editoriales sin actualizar

El 1 es para devolver algo en la SELECT puedes poner l.isbn

Lo que hace la SQL es mostrar todas las editoriales donde no exista un libro con fecha '0000-00-00' por eso el fitro en la subselect and Fecha<>'0000-00-00'

Todos los registros que no han sido modificados tiene como valor del campo '0000-00-00' o lo tienen puesto a null?
  #5 (permalink)  
Antiguo 19/01/2007, 10:15
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Sacar editoriales sin actualizar

Cita:
Iniciado por seanchan Ver Mensaje
Todos los registros que no han sido modificados tiene como valor del campo '0000-00-00' o lo tienen puesto a null?
No, null no tiene ninguno. El valor por default es 0000-00-00, y es el valor que tienen todos aquellos libros que nunca fueron actualizados.

Respecto a la consulta, el problema es que trae todas aquellas editoriales que no tienen ningun libro en la tabla libro,... por que en la subconsulta estás enlazando los ideditorial. Entonces, al poner un "not exists", trae todos aquellos que no existen en la tabla libros. Me explico?. Bah, al menos eso me parece.
  #6 (permalink)  
Antiguo 19/01/2007, 10:53
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Sacar editoriales sin actualizar

Sí, si no tiene libros relacionados también saldrán. Bastaría con:

Código:
Select idEditorial,Nombre
from Libros,Editoriales e
where Libros.idEditorial=e.idEditorial
and not exists (select 1 from libros l where l.idEditorial=e.IdEditorial
                         and Fecha<>'0000-00-00')
Así te aseguras que no muestre las editoriales que no tengan libros.
  #7 (permalink)  
Antiguo 19/01/2007, 12:22
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Sacar editoriales sin actualizar

Ahora si, pefecto!. Mil gracias!
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




La zona horaria es GMT -6. Ahora son las 08:01.