Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2008
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Question 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
Responder Con Cita
  #2  
Antiguo 12-01-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
No esta muy clara tu descripcion de las tablas...si las explicas sería más fácil.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #3  
Antiguo 12-01-2008
ecch ecch is offline
Miembro
 
Registrado: dic 2007
Posts: 11
Poder: 0
ecch Va por buen camino
Si estan en una maquina Sql

Cita:
Empezado por mateamargo Ver Mensaje
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

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

Última edición por ecch fecha: 12-01-2008 a las 08:57:10. Razón: inconcluso
Responder Con Cita
  #4  
Antiguo 12-01-2008
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Smile 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.
Responder Con Cita
  #5  
Antiguo 12-01-2008
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Consulta SQL

Cita:
Empezado por AzidRain Ver Mensaje
No esta muy clara tu descripcion de las tablas...si las explicas sería más fácil.
Lo que tengo es una tabla de articulos y una de precios
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
Responder Con Cita
  #6  
Antiguo 12-01-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código SQL [-]
Select A.Articulo, 
case when P.Lista = 1 then P.Precio else 0 end Precio1,
case when P.Lista = 2 then P.Precio else 0 end Precio2
From Articulos A
Join Precios P on P.Articulo = A.Articulo

O tambien:

Código SQL [-]
Select A.Articulo, P1.Precio, P2.Precio
From Articulos A
left outer Join Precios P1 on P1.Articulo = A.Articulo and P1.Lista = 1
left outer Join Precios P2 on P2.Articulo = A.Articulo and P2.Lista = 2

Eso es en SQL server....
__________________

Responder Con Cita
  #7  
Antiguo 13-01-2008
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 14-01-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
es que a la primer opción se me olvidó ponerle "left outer" antes del join... pero en sí es lo mismo.
__________________

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar campos de tablas dbase a ADO JF Sebastian Conexión con bases de datos 4 19-09-2007 10:35:44
Tablas con campos autoincrementales Sito Conexión con bases de datos 6 14-04-2006 13:01:03
ayuda a pasar campos de dos tablas a una ddd_ddd SQL 8 23-09-2005 05:51:08
Precision en campos de tablas .dbf quali Conexión con bases de datos 0 17-03-2005 23:36:33
Sumar los campos de 3 tablas luisreg SQL 2 28-01-2004 02:34:41


La franja horaria es GMT +2. Ahora son las 04:20:20.


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
Copyright 1996-2007 Club Delphi