sql con varios inner join

marc9000
02 de Septiembre del 2004
Estoy implementando un programa que gestiona stocks, lo hago en Visual Basic 6 y ataco a una BD Access 2000.

Mi problema es sacar una select que muestra datos de distintas tablas y no consigo anidar correctamente los distintos INNER JOIN. Mi idea es la siguiente:

TABLAS

ALBARAN_ENTRADA
Id
Numero
Fecha
Descripcion
Proveedor_id
Cliente_id
Seccion_id

DETALLE_ENTRADA
Id
Albaran_entrada_id
Producto_id
Cantidad
Descripcion

PRODUCTO
Id
Codigo
Nombre
Descripcion

CLIENTE
Id
Codigo
Nombre

PROVEEDOR
Id
Codigo
Nombre

SECCION
Id
Codigo
Nombre

Por un lado tengo una select de detalle_entrada:

Select producto.codigo, producto.nombre, detalle_entrada.cantidad, detalle_entrada.descripcion from detalle_entrada inner join producto on producto.id = detalle_entrada.producto_id

Y por otro la select del albaran_entrada:

Select albaran_entrada.numero, albaran_entrada.fecha, albaran_entrada.descripcion, cliente.codigo, cliente.nombre, proveedor.codigo, proveedor.nombre, seccion.codigo, seccion.nombre from albara_entrada inner join cliente on cliente.id = albaran_entrada.cliente_id inner join proveedor on proveedor.id = albaran_entrada.proveedor_id inner join seccion on seccion.id = albaran_entrada.seccion_id

Lo que quiero es:

Primero aclarar como anidar correctamente estos inner join de la segunda select ya que no lo he conseguido.

Luego la primera select por separado no tiene porque dar muchos problemas, pero lo ideal seria hacer una sola sentencia de las 2.

Si alguien sabe como hacer esto o incluso me puede recomendar un manual o un libro de SQL le estaría muy agradecido.

Marc.

Isa? Islas
02 de Septiembre del 2004
Instale la ayuda en linea de SQL

http://www.microsoft.com/sql/techinfo/productdoc/2000/books.asp

Sara Bel?
02 de Septiembre del 2004
Anidar select con el puto access (que va a su bola, independizandose de lo que es en realidad SQL)
S de EEEEEESSSSStandar.


SELECT *
from HISTORIAL H
inner join PARCELAS Pa on H.HisFKIdParcela = Pa.IdParcela;

En lugar de poner el inner join a continuación del punto y coma, metes el otro inner join entre la tabla del primer inner join y el on, y pones los paréntesis del siguente modo:


SELECT *
from HISTORIAL H
inner join ( PARCELAS Pa
inner join PERSONA P on
Pa.personaFK=P.Idersona)

on H.HisFKIdParcela = Pa.IdParcela;


Espero que te sirva. Un saludo.






marc9000
02 de Septiembre del 2004
crea dos vistas renombrando campos que se relacionan y por ultimo unes las dos vistas