SQL Server - Unir dos consultas en una misma tabla

 
Vista:
sin imagen de perfil

Unir dos consultas en una misma tabla

Publicado por Alonso (3 intervenciones) el 22/06/2015 00:50:07
Hola Comunidad.
Necesito ayuda con esta consulta en Sql Server.

BASE DATOS SQL SERVER
Estas son las Tablas que estoy utilizando.
Tabla 1: Ctl_Registro_Categorias
Campos.
- ID_Categoria (Int)
- Nombre_Categoria (Varchar)

Tabla 2: Ctl_Registro_Proveedor
Campos.
- ID_Proveedor (Int)
- Nombre_Proveedor (Varchar)

Tabla 3: Ctl_Registro_Productos
Campos.
- ID_Producto (Int)
- Nombre_Producto (Varchar)
- ID_Categoria (Int)
- ID_Proveedor (Int)


Quisiera me que me ayudaran con esta consulta.
La Consulta que actualmente tengo es esta.
SELECT Ctl_Registro_Categorias.Nombre_Categoria as CATEGORÍA, b.ID_Proveedor FROM Ctl_Registro_Productos AS b INNER JOIN Ctl_Registro_Productos ON b.ID_Producto = Ctl_Registro_Productos.ID_Producto INNER JOIN Ctl_Registro_Categorias ON Ctl_Registro_Productos.ID_Categoria = Ctl_Registro_Categorias.ID_Categoria

SELECT b.ID_Categoria, Ctl_Registro_Proveedor.Nombre_Proveedor as PROVEEDOR FROM Ctl_Registro_Productos AS b INNER JOIN Ctl_Registro_Productos ON b.ID_Producto = Ctl_Registro_Productos.ID_Producto INNER JOIN Ctl_Registro_Proveedor ON Ctl_Registro_Productos.ID_Proveedor = Ctl_Registro_Proveedor.ID_Proveedor

Donde me muestra este resultado.

· En donde al ID_Categoria le paso el Nombre.
· Y ID_Proveedor le paso el Nombre.




Pero realmente lo quiero es que la consulta me quede así.

Quisiera unir las 2 consulta que realizo arriba para que me muestre en una sola tabla el resultado.










Hice esta otra consulta.
SELECT Ctl_Registro_Categorias.Nombre_Categoria as CATEGORÍA, b.ID_Proveedor FROM Ctl_Registro_Productos AS b INNER JOIN Ctl_Registro_Productos ON b.ID_Producto = Ctl_Registro_Productos.ID_Producto INNER JOIN Ctl_Registro_Categorias ON Ctl_Registro_Productos.ID_Categoria = Ctl_Registro_Categorias.ID_Categoria UNION SELECT b.ID_Categoria, Ctl_Registro_Proveedor.Nombre_Proveedor as PROVEEDOR FROM Ctl_Registro_Productos AS b INNER JOIN Ctl_Registro_Productos ON b.ID_Producto = Ctl_Registro_Productos.ID_Producto INNER JOIN Ctl_Registro_Proveedor ON Ctl_Registro_Productos.ID_Proveedor = Ctl_Registro_Proveedor.ID_Proveedor

Pero me da Problema.

Gracias por tu Respueta…
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Unir dos consultas en una misma tabla

Publicado por Rafael (110 intervenciones) el 23/06/2015 11:02:57
A ver varios detalles que no entiendo:

1. Tus consultas originales forzas a unir una tabla consigo misma:
1
2
FROM Ctl_Registro_Productos AS b
INNER JOIN Ctl_Registro_Productos ON b.ID_Producto = Ctl_Registro_Productos.ID_Producto
Y no se para que lo haces...

El union no se para que lo quieres pero no puedes unir dos tablas con distintos tipos de campo:
tu primer consulta devuelve un nombre y luego un ID (que dices es numerico)
1
2
SELECT Ctl_Registro_Categorias.Nombre_Categoria AS CATEGORÍA
	,b.ID_Proveedor
La segunda un ID y luego un nombre
1
2
SELECT b.ID_Categoria
	,Ctl_Registro_Proveedor.Nombre_Proveedor AS PROVEEDOR

Vaya que por eso marca error ... la primer consulta en su primer consulta es INT y con el union le metes VARCHAR, y lo mismo a la segunda columna que primero es VARCHAR y luego le metes un INT...

como sea no es correcto lo que haces ... supongo que mas bien quieres algo asi:
1
2
3
4
5
6
7
SELECT A.ID_Producto
     , A.Nombre_Producto
     , B.Nombre_Categoria
     , C.Nombre_Proveedor
FROM   Ctl_Registro_Productos AS A
       INNER JOIN Ctl_Registro_Categorias AS B ON B.ID_Categoria = A.ID_Categoria
       INNER JOIN Ctl_Registro_Proveedor  AS C ON C.ID_Proveedor = A.ID_Proveedor

Vaya que no puedo intuir otra cosa.... ya nos contaras

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Unir dos consultas en una misma tabla

Publicado por Alonso (3 intervenciones) el 24/06/2015 07:04:57
Pues voy a ver si me explico mejor.

Tengo la Tabla: Ctl_Registro_Productos

Donde esta tabla la cargo en un datagriview en vb.

Y lo quiero es que en ver del ID_Categoria y ID_Proveedor 1,2 que me aparezca el nombre de la categoría y el proveedor de acuerdo a su ID.

Ejemplo.

Campos de la tabla Ctl_Registro_Productos.
ID_Categoria ID_Proveedor
1 2

Quisiera pasarles el nombre de acuerdo a su ID es decir.

ID_Categoria ID_Proveedor
Monitor PC Center

Pero si no se puede realizar una consulta de esta manera, voy a ver como se puede hacer de otro modo.

Y si entiendo a tu explicación y esa era mi duda.

Gracias por la ayuda.

Excelente Foro la respuesta es rápida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Unir dos consultas en una misma tabla

Publicado por Rafael (110 intervenciones) el 24/06/2015 10:21:02
Con la ultima consulta que te he dado tienes el nombre de la categoria y proveedor, pero no se realmente si la duda es de SQL Server o de como hacerlo con el DatagridView, para que te aparezca el listado y demas...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Unir dos consultas en una misma tabla

Publicado por Alonso (3 intervenciones) el 24/06/2015 17:17:24
Gracias Rafael por tu guía…
Consulta realizada exitosamente.

SELECT b.ID_Producto, b.Nombre_Producto, Nombre_Categoria, Nombre_Proveedor From Ctl_Registro_Productos AS b INNER JOIN Ctl_Registro_Productos ON b.ID_Producto = Ctl_Registro_Productos.ID_Producto INNER JOIN Ctl_Registro_Categorias ON Ctl_Registro_Productos.ID_Categoria = Ctl_Registro_Categorias.ID_Categoria INNER JOIN Ctl_Registro_Proveedor ON Ctl_Registro_Productos.ID_Proveedor = Ctl_Registro_Proveedor.ID_Proveedor

Ya está Funcionando consulta en VB.
Gracias por el aporte Rafael.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar