Ver Mensaje Individual
  #9 (permalink)  
Antiguo 02/07/2013, 16:03
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Query para traer los productos mas caros

Código SQL:
Ver original
  1. CREATE TABLE #piezas
  2. (
  3. codigo INT,
  4. nombre VARCHAR(20)
  5. )
  6.  
  7. CREATE TABLE #suministra
  8. (
  9. codigopieza INT,
  10. idproveedor INT,
  11. precio INT
  12. )
  13.  
  14. CREATE TABLE #proveedores
  15. (
  16. id INT,
  17. nombre VARCHAR(20)
  18. )
  19.  
  20. INSERT INTO #piezas VALUES (1,'tornillo')
  21. INSERT INTO #piezas VALUES (2,'martillo')
  22. INSERT INTO #piezas VALUES (3,'cinta')
  23. INSERT INTO #piezas VALUES (4,'tuerca')
  24.  
  25. INSERT INTO #suministra VALUES (1,45,50)
  26. INSERT INTO #suministra VALUES (2,45,250)
  27. INSERT INTO #suministra VALUES (3,45,150)
  28. INSERT INTO #suministra VALUES (4,55,150)
  29.  
  30. INSERT INTO #proveedores VALUES (45,'srl')
  31. INSERT INTO #proveedores VALUES (55,'hmb')
  32.  
  33. SELECT tabla.* FROM(
  34. SELECT t1.codigo,t1.nombre,t2.codigopieza,t2.idproveedor,t2.precio,t3.id,t3.nombre AS proveedor FROM #piezas AS t1
  35. LEFT JOIN #suministra AS t2 ON (t1.codigo=t2.codigopieza)
  36. LEFT JOIN #proveedores AS t3 ON (t2.idproveedor=t3.id)
  37. ) AS tabla
  38.  
  39. 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)
  40. WHERE tabla2.precio IS NOT NULL
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me