Mostrar registros de 2 tablas en sql

Tengo una duda en la cual me podrías ayudar,

De acuerdo a un análisis tuyo he tenido que modificar en algo el diseño de una tablas (producto-paquete)separar el producto de los paquetes

Tabla producto tabla paquete tabla detallepaquete

codigo_producto codigo_paquete codigo_paquete

descrip_producto descripción codigo_producto

Total total cantidad

Registros de productos

Codigo descripcion total
-------- ----------- --
1 cocacola 2,00
2 sopa 1,00

registros de paquete

Codigo descripcion total
-------- ------------- ---
P1 cocacola+sopa 2,00

registro del detalle del paquete

Codigo-paq codigo-product cantidad
-------- - ------------ ---
p1            1               1
P1 2 1

he creado mi tabla factura y su detalle(donde se registra los productos o paquetes vendidos)

Tabla factura detalle-factura

num_factura num_factura

total cod-producto_paquete --¿No se si debería declararlo así?

Cantidad

***Supongamos que se realice una venta factura f001, en donde se vende 1 paquete y una gaseosa mas (coca cola)

Factura----F001

en el detalle de la factura

Numero-factu product -paquete cantidad
-------- ------------- ---
F001 p1 1
F001 1 1

cuando lo registro no tengo ningún problema el problema esta cuando debo realizar una consulta de la factura F001(necesito mostrar la descripción del código del producto y paquete de la factura F001)

Es decir de esta manera

Numero-factu product -paquete cantidad
-------- ------------- ---
F001              cocacola+sopa          1
¿F001 cocacola 1

como realizo la sentencia sql?

Espero que me hayas entendido

-Es muy importante considerar que van aver diferentes tipos de ventas

En la Factura F002--quizas se venda un producto

En la factura F003--quizas se venda 1 paquete y así

Cuando realiza la consulta se debe considerar todo esto

1 respuesta

Respuesta
1

Lo importante aquí es el concepto.

La unión de las tablas, es por su campo Código, y es por ahí que debes hacer el Select.

Hay dos formas los más antiguos programadores hacen un Where y los más nuevos un Join

De cualquiera de las dos formas siempre se unen por el campo que son comunes. En tu caso los códigos, tanto del paquete como del producto.

Aquí te dejo un ejemplo de Inner Join

http://www.w3schools.com/sql/sql_join_inner.asp

hola si claro pero en este caso son para dos tablas como haría la sentencia

si fuera una seria de la siguiente manera

select x.num_factura as numero, y.descrip_producto, as [descripcion producto], x.cantidad as cantidad from detalle-factura x,producto y where x.codigoproducto=y.codigoproducto and codigofactura='f001'

claro funcionaria si fuera los 2 campos iguales de:

tabla productos tabla detalle-factura

codigoproducto -------- codigoproducto

pero como veras en mi tabla detalle-factura

lo he declarado de la siguiente manera

tabla detalle-factura

codigo_factura

codigo_producto_o_paquete (¿por eso te preguntaba arriba si debo hacerlo asi?

porque en este campo se debe registrar producto y o paquete

No importa el nombre del campo, importa el tipo de dato sea comparable, y si lo son.

Lee el enlace que te mandé y verás como hacerlo.

Si tienes dudas me lo haces saber.

hola el ejemplo del link es lo mismo que la sentencia de arriba

select x.num_factura as numero, y.descrip_producto, as [descripcion producto], x.cantidad as cantidad from detalle-factura x,producto y where x.codigoproducto=y.codigoproducto and codigofactura='f001'

pero no es mi caso

como veras tengo dos tablas que están enlazadas a una la pregunta es como lo hago

porque la tabla productos y paquete no hay relación de campo iguales?

Pero la que si hay es la de Detalle Factura.

Así que por ahí debes unir, uniendo la Tabla Detalle Factura con las otras dos.

parece que no has visto la tabla detallefactura, si es la que te estoy hablando

es de ahí donde quiero hacer la consulta

alguna idea

Según tus estructuras tu en DETALLE Factura tienes el código del producto, o el código del Paquete.

Según tus palabras quieres con esa table "detalle factura" quieres cambiar el código por el nombre del producto o del paquete.

¿Hasta ahí vamos bien?

Entonces, si entendí bien (si no me corriges) lo que haces aquí está bien:

select x.num_factura as numero, y.descrip_producto, as [descripcion producto], 
x.cantidad as cantidad 
from detalle-factura x,producto y, paquete p
where x.codigoproducto=y.codigoproducto 
and x.codigoproducto=p.codigoproducto
and codigofactura='f001'

Lo que te faltaría ahí es unir la tercera tabla, que es la de "paquetes".

Deberás agregar al From la tabla "paquetes" y al Where una cláusula más.

Algo así:

select x.num_factura as numero, y.descrip_producto, as [descripcion producto], 
x.cantidad as cantidad from detalle-factura x,producto y 
where x.codigoproducto=y.codigo-paq
and codigofactura='f001'

Ahora, hasta ahí podríamos unir las dos tablas, pero cual de las dos descripciones tomar sería la pregunta.

Se puede hacer algo así:

select x.num_factura as numero, p.descripion, as [descripcion producto], 
x.cantidad as cantidad from detalle-factura x,
(Select codigo, descripcion From productos
Union
Select codigo, descripcion from paquete) p
Where x.codigoproducto = p.codigo
and x.codigofactura='f001'

Como ves hago un SubQuery dentro del paréntesis con la finalidad de unir las dos tablas, ya que son afines en campos, entonces, tanto productos como paquetes ahora son una sola tabla, y luego en el Where las uno por el código del producto, solo hay un campo descripción que la descripción del paquete o producto de la tabla que se forma en el SubQuery.

Si tienes dudas me lo haces saber.

solo me queda esta duda para poder entenderlo

esta linea de código

Where x.codigoproducto = p.código -----del ultimo script

X.codigoproducto es el campo de la tabla detallefactura ¿como al campo de ejemplo de esta tabla detalle_factura lo puse así

cod-producto_paquete

p.código -------le corresponde al campo de la tabla ?

veo también que dentro de aqui

(Select codigo, descripcion From productos
Union
Select codigo, descripcion from paquete) p

estas declarando estos campos

código, descripción a productos y a paquetes como iguales

pero en mis tablas son diferentes

tabla producto   tabla paquete     tabla detallepaquete
codigo_producto   codigo_paquete    codigo_paquete
descrip_producto     descripción    codigo_producto
total                total          cantidad

tiene que ser iguales o ?

Yo lo saqué de las tablas que pusiste en el primer post.

Cambialos según tu necesidad, no habrá problema

Los nombres no importan.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas