Comunidad de diseño web y desarrollo en internet online

Consulta única SQL, relaciónando varias tablas.

Citar            
MensajeEscrito el 10 Abr 2009 09:51 pm
Hola gente! intento elaborar una consulta donde relaciono varias tablas, intento recojer todos los datos necesarios pero tengo problemas en la salida.

Para entender mejor la función, en ciertas secciones se debe mostrar el contenido almacenado por un usuario en concreto, necesito mostrar lo siguiente:
- Datos del usuario.
- Datos de su grupo (si no tiene.. mostrar su valor vacio).
- Libro del usuario publicado.
- Listar todos los documentos correspondientes al libro del usuario (este último debo paginar).

En total son 4 tablas relacionados entre si (usuarios, grupos, libros, documentos)

Mi consulta actual:

Código :

SELECT l.id_libro, l.nombre, l.descripcion, d.id_docu, d.nombre, u.id_usuario, u.nombre, g.nombre
FROM libros l
INNER JOIN documentos d ON l.id_libro = d.id_libro
AND l.nombre = 'nombre del libro'
INNER JOIN usuarios u ON u.id_usuario = l.id_libro


Primero tengo problemas al querer agregar la petición de los datos del usuario, ya que se listan todos los documentos del libro en questión, pero no se limita ahí. También muestra documentos de sus otros libros (tambien del mismo usuario).

Tampoco se como añadir a la consulta la petición del nombre del grupo, si no pertenece a ninguno.. pues me muestre el valor vacio (null).

Bueno, gracias..

Por xixyarg

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Abr 2009 11:12 pm
Intenta hacerlo asi:

SELECT l.id_libro, l.nombre, l.descripcion, d.id_docu, d.nombre, u.id_usuario, u.nombre, g.nombre
FROM libros l, documentos d, usuarios u WHERE l.id_libro = d.id_libro AND l.nombre = 'nombre del libro' AND u.id_usuario = l.id_libro;

Por mmarulanda

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Abr 2009 12:00 pm
Gracias pero no sé como añadir la tabla grupos a esa consulta.. "grupos g", fíjate que en SELECT está "g.nombre", en esta parte quiero que muestre su valor aunque sea "null".

SELECT l.id_libro, l.nombre, l.descripcion, d.id_docu, d.nombre, u.id_usuario, u.nombre, g.nombre
FROM libros l, documentos d, usuarios u WHERE l.id_libro = d.id_libro AND l.nombre = 'nombre del libro' AND u.id_usuario = l.id_libro;

Tampoco utilizaba "where" sino JOIN's porque me lo habían recomendado (más rápido) solo que me cuesta aplicarlo en toda la consulta.

Por xixyarg

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Abr 2009 12:32 pm
Bueno ya lo solucioné, debo utilizar JOINS si o si, en este caso usar LEFT JOIN para mostrar resultados aunque estén vacios.

Gracias.

Por xixyarg

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.