02/07/2013, 17:40
|
| | Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años, 2 meses Puntos: 1 | |
Respuesta: Query para traer los productos mas caros Cita:
Iniciado por Libras
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
Buenísimo, gracias!!!!
Lo que no entiendo es por que esta respuesta que es la que muestra el práctico que estoy realizando, me trae todas las piezas:
Código SQL:
Ver originalSELECT p1.Nombre, pr1.Nombre, Precio FROM Piezas p1 INNER JOIN (Suministra s1 INNER JOIN Proveedores pr1 ON s1.IdProveedor = pr1.Id) ON p1.Codigo = s1.CodigoPieza WHERE Precio IN (SELECT MAX(Precio) FROM Suministra s2 GROUP BY s2.CodigoPieza HAVING s2.CodigoPieza = p1.Codigo)
Última edición por gnzsoloyo; 02/07/2013 a las 19:24
Razón: SQL mal etiquetado
|