Sv Community El Salvador
Soporte y Tecnología => Programación => Base de Datos => Mensaje iniciado por: Darkness en junio 22, 2009, 09:04:03 am
-
Bueno tengo un problema con encontrar una solucion a una consulta SQL
el problemas es asi
Mi BD esta conformada por diversos owner (compaņias), para el caso cada Owner es una compaņia, entonces se entiende que la estructura va asi
compania1.precios
compania2.precios
compania3.precios
compania4.precios
ahora bien lo que necesito es obtener los precios de todas las companias en un solo reporte, pero no se como hacer la consulta si hacer un SP o una Vista...
la estructura del resultado seria algo como essto
Articulo descripcion compania1 compania2 compania3 compania4
0001 articulo 1 $ 1.00 $ 2.00 $ 1.50 $ 0.00
0002 articulo 2 $ 2.00 $ 2.00 $ 1.50 $ 2.00
0003 articulo 3 $ 0.00 $ 1.00 $ 1.50 $ 1.00
No encuetro como hacerlo :cry:
-
Como relacionas la tabla compaņias con la tabla articulos?
-
Como relacionas la tabla compaņias con la tabla articulos?
La estructura es asi
BD.OWNER.TABLA
donde
BD = Base de Datos
OWNER = Compaņia
Taba = Tabla
existe una tabla compaņia, pero nada tiene que ver con la tabla articulos
ya que esa es una tabla catalogo global
dbo.compania
-
Bueno... aveces mucho ayuda saber el gestor de base de datos que se esta utilizando, pues aunque existe un standar ISO; cada gestor de base de datos tiene sus propias FEATURE'S.
bueno.. para el caso, si no estoy mal... intuyo que estas utilizando SQL SERVER... entonces... mi querido amigo.. como vos queres un resultado HORIZONTAL en los precios por las diferentes compaņias.... lo que se me ocurre es que tus grandes aliadas... sean las SUBCONSULTAS que poderosamente sabe manejar SQL SERVER (porque a oracle le pela el gorro por en veces)....
y la onda seria mas o menos asi.
select COD_ARTICULO AS ARTICULO,DESCRIPCION,PRECIO_COMPAŅIA1 AS COMPAŅIA1
FROM DB1.COMPAŅIA1.TABLA_PRECIOS1
ESTO TE DARIA LOS PRECIOS SOLO DE UNA SOLA COMPAŅIA...
AHORA HAGAMOS PARA EL RESTO
select COD_ARTICULO AS ARTICULO,DESCRIPCION,PRECIO_COMPAŅIA1 AS COMPAŅIA1
,ISNULL((SELECT PRECIO_COMPAŅIA2 FROM DB2.COMPAŅIA2.TABLA_PRECIOS2
WHERE DB2.COMPAŅIA2.TABLA_PRECIOS2.COD_ARTICULO=DB1.COMPAŅIA1.TABLA_PRECIOS1),0) AS AS COMPAŅIA2
FROM DB1.COMPAŅIA1.TABLA_PRECIOS1
El ejemplo anterior... solo lo hice... para valores de la compaņia1 y la compaņia2... pero asi susecivamente.. podes agregar para el 3 y el 4.... ahora bien.... te adelanto que dicha forma de sacar el script... tiene sus desventajas... una de ellas es la siguiente:
SI AL HACER UN COMPARE ENTRE LAS DIFERENTES TABLAS, TE DA COMO RESULTADO QUE NO SON IGUALES EN SU CONTENIDO.. EL SCRIPT UNICAMENTE TE SACARA TODOS AQUELLOS CODIGOS DE ARTICULOS.. QUE TENGAN REFERENCES.. ENTRE EL RESTOS DE TABLAS HOMOLOGAS EN LOS DIFERENTES BASES ŋsi me explico? ... de tal suerte que si vos tenes un codigo de articulo 3050-- que no existe en compaņia1 pero si esta en compaņia5--- ese articulo no aparecera.. por razones obvias de references...
Articulo descripcion compania1 compania2 compania3 compania4
0001 articulo 1 $ 1.00 $ 2.00 $ 1.50 $ 0.00
0002 articulo 2 $ 2.00 $ 2.00 $ 1.50 $ 2.00
0003 articulo 3 $ 0.00 $ 1.00 $ 1.50 $ 1.00
espero haberte dado alguna idea..... saludos