SQL con campos de dos tablas
Hola,
Les planteo lo que necesito: Basicamente tengo 2 tablas articulos y precios. Articulos: codigo_art descripcion Precios: codigo_art codigo_lista precio_lista Tengo los siguientes datos: Articulos : codigo_art descripcion 1 articulo nro 1 2 articulo nro 2 Precios codigo_art codigo_lista precio_lista 1 1 50.00 2 2 85.00 archivo que quiero obtener despues de la ejecución del sql codigo_art descripcion precio1 (el de la lista1) precio2 (el de la lista2) 1 articulo nro 1 50.00 0.00 2 articulo nro 2 0.00 85.00 Desde ya muchas gracias por vuestro tiempo. Saludos :rolleyes: |
No esta muy clara tu descripcion de las tablas...si las explicas sería más fácil.
|
Si estan en una maquina Sql
Cita:
Mi opinion es que si necesitas dos Listas de precios lo trabajes a Nivel de Campo y no de registro. de esa forma tu construccion sql seria mas sencilla y no complicas al motor de Base de Datos. Es decir la estructura de la segunda tabla yo la cambiaria por la siguiente: Precios codigo_art precio_lista1 precio_lista2 1 50.00 0.00 2 0.00 85.00 Luego ya puedes hacer la construccion SQL SELECT a.cod_art, a.descripcion, b.precio_lista1, b.precio_lista2 FROM Articulos a, Precios b WHERE a.cod_art = b.cod_art Tal como esta tu estructura, se podria intentar algo como esto, pero no lo he comprobado, seria cuestion de ponerlo en una base de datos y probarlo, (el (+) es para hace un outher Join, habria que ver como se hace en el dialecto de tu base de datos) SELECT a.cod_art, a.descripcion, b.precio_lista precio1, c.precio_lista precio2 FROM Articulos a, Precios b, Precios c WHERE a.cod_art = b.cod_art AND a.cod_art = c.cod_art AND b.codigo_lista(+) = c.codigo_lista Bueno Es una idea, espero te sirva de algo, aunque la estructura de tu Lista de precios no acaba de convencerme. Suerte |
Estructura de Tabla de Lista de Precios
Hola,
Gracias por las respuestas. Al ultimo mensaje debo decirle que , lo que tu me decis funciona pero con una limitación muy importante, que pasa si tengo 100 listas de precios pero solamente el cliente usa 5 por ejemplo voy a defnir campos en la tabla que me van a ocupar un espacio enorme que no se va a utilizar jamas ocupando un espacio innecesario y complcando el mantenimiento de la lista de precios, (ej. formularios de manteniminto). etc. |
Consulta SQL
Cita:
en la de articulos el codigo y la descripcion En la de precios el codigo de articulo, el codigo de la lista de precios y valor del precio para esa lista. Quiero ejecutar una consulta que me devuelva para cada articulo lo siguiente: un registro para cada articulo que tenga la siguiente información: codigo de articulo,descripcion,precio de la lista1 , precio de la lista 2 Desde ya muchas gracias :) |
O tambien:
Eso es en SQL server.... |
Muchisimas gracias.
Anduvo perfecto. La 1er. opcion funciona cuando hay match en ambas tablas, las segundas funciona para todos los articulos y lo único que hay que tener en cuenta que cuando no hay precios para na lista determinada convertir el null en 0. Es un placer pertenecer a esta comunidad. Un abrazo |
es que a la primer opción se me olvidó ponerle "left outer" antes del join... pero en sí es lo mismo.
|
La franja horaria es GMT +2. Ahora son las 18:34:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi