Código SQL:
Ver originalCREATE TABLE #piezas
(
codigo INT,
nombre VARCHAR(20)
)
CREATE TABLE #suministra
(
codigopieza INT,
idproveedor INT,
precio INT
)
CREATE TABLE #proveedores
(
id INT,
nombre VARCHAR(20)
)
INSERT INTO #piezas VALUES (1,'tornillo')
INSERT INTO #piezas VALUES (2,'martillo')
INSERT INTO #piezas VALUES (3,'cinta')
INSERT INTO #piezas VALUES (4,'tuerca')
INSERT INTO #suministra VALUES (1,45,50)
INSERT INTO #suministra VALUES (2,45,250)
INSERT INTO #suministra VALUES (3,45,150)
INSERT INTO #suministra VALUES (4,55,150)
INSERT INTO #proveedores VALUES (45,'srl')
INSERT INTO #proveedores VALUES (55,'hmb')
SELECT tabla.* FROM(
SELECT t1.codigo,t1.nombre,t2.codigopieza,t2.idproveedor,t2.precio,t3.id,t3.nombre AS proveedor FROM #piezas AS t1
LEFT JOIN #suministra AS t2 ON (t1.codigo=t2.codigopieza)
LEFT JOIN #proveedores AS t3 ON (t2.idproveedor=t3.id)
) AS tabla
LEFT JOIN (SELECT MAX(precio) AS precio,idproveedor FROM #suministra GROUP BY idproveedor) AS tabla2 ON (tabla.precio=tabla2.precio AND tabla.idproveedor=tabla2.idproveedor)
WHERE tabla2.precio IS NOT NULL