No es correcta esa solución. Te pongo un ejemplo para que lo veas:
Con el supuesto de los registros descritos arriba, tu primera parte de la intersección obtiene 3 registros (filas) cogiendo el artículo A1 y pegándole cada uno de los proveedores.
Luego coges el nombre de cada proveedor:
Es decir que tus operaciones siempre devuelven el nombre de todos los proveedores. En ningún momento compruebas que ese proveedor haya solicitado ese artículo. Para hacer esto es para lo que tienes la relación PEDIDOS que relaciona los proveedores con los artículos. Es fácil ver esto porque es la relación que relaciona los códigos de una con los códigos de la otra y debes usar esta condición para filtrar los productos.
Lo que tienes que hacer es coger los artículos de color Rojo:
Relacionarlo con la tabla/relación PEDIDOS con el fin de obtener los Cod_prov de los proveedores que tengan algún pedido con esos artículos:
Y ahora relacionar este resultado R2 con la tabla PROVEEDORES para sacar los nombres asociados a cada Cod_prov que tenemos:
Y ahora nos quedamos solo con los nombres:
Con eso ya tienes los nombres de los proveedores que han suministrado artículos de color rojo. Te quedaría hacer lo mismo para los de color verde. Es más fácil si lo vas haciendo por partes como te he puesto yo aquí porque te quedan consultas más cortas.
Hazlo detenidamente y en caso de duda siempre puedes ponerte un ejemplo pequeño con 3 tablas y ver lo que va saliendo. Cualquier duda que tengas no dudes en comentar.
PD: Si utilizas tablas de ejemplo que sean pequeñas porque cada vez que multiplicas dos tablas A y B con un número de filas #A = n y #B = m, tendrás una tabla resultado C con un número de filas #C = m*n por lo que las tablas crecerán muy rápido de número de filas.
Código [Seleccionar]
PROVEEDORES:
P1 NombreP1 CiudadP1 ...
P2 NombreP2 CiudadP2 ...
P3 NombreP3 CiudadP3 ...
Código [Seleccionar]
ARTICULOS:
A1 NombreA1 Rojo ...
A2 NombreA2 Verde ...
A3 NombreA3 Azul ...
Con el supuesto de los registros descritos arriba, tu primera parte de la intersección obtiene 3 registros (filas) cogiendo el artículo A1 y pegándole cada uno de los proveedores.
Código [Seleccionar]
RESULTADO R1 = (Proveedores * Sigma(Color = 'Rojo')(Articulos)):
P1 NombreP1 ... A1 NombreA1 Rojo ...
P2 NombreP2 ... A1 NombreA1 Rojo ...
P3 NombreP3 ... A1 NombreA1 Rojo ...
Luego coges el nombre de cada proveedor:
Código [Seleccionar]
RESULTADO R2 = PI(nombre)(R1):
NombreP1
NombreP2
NombreP3
Es decir que tus operaciones siempre devuelven el nombre de todos los proveedores. En ningún momento compruebas que ese proveedor haya solicitado ese artículo. Para hacer esto es para lo que tienes la relación PEDIDOS que relaciona los proveedores con los artículos. Es fácil ver esto porque es la relación que relaciona los códigos de una con los códigos de la otra y debes usar esta condición para filtrar los productos.
Lo que tienes que hacer es coger los artículos de color Rojo:
Código [Seleccionar]
R1 = Sigma(color = 'Rojo')(Artículos)
Relacionarlo con la tabla/relación PEDIDOS con el fin de obtener los Cod_prov de los proveedores que tengan algún pedido con esos artículos:
Código [Seleccionar]
R2 = Sigma(Pedidos.Cod_art = Articulos.Cod_art)(PEDIDOS x R1)
Y ahora relacionar este resultado R2 con la tabla PROVEEDORES para sacar los nombres asociados a cada Cod_prov que tenemos:
Código [Seleccionar]
R3 = Sigma(Proveedores.Cod_prov = R2.Cod_prov)(Proveedores x R2)
Y ahora nos quedamos solo con los nombres:
Código [Seleccionar]
R4 = PI(Nombre)(R3)
Con eso ya tienes los nombres de los proveedores que han suministrado artículos de color rojo. Te quedaría hacer lo mismo para los de color verde. Es más fácil si lo vas haciendo por partes como te he puesto yo aquí porque te quedan consultas más cortas.
Hazlo detenidamente y en caso de duda siempre puedes ponerte un ejemplo pequeño con 3 tablas y ver lo que va saliendo. Cualquier duda que tengas no dudes en comentar.
PD: Si utilizas tablas de ejemplo que sean pequeñas porque cada vez que multiplicas dos tablas A y B con un número de filas #A = n y #B = m, tendrás una tabla resultado C con un número de filas #C = m*n por lo que las tablas crecerán muy rápido de número de filas.