Ver Mensaje Individual
  #11 (permalink)  
Antiguo 27/07/2015, 13:58
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: Como puedo resolver esta consulta en MYSQL?

Código SQL:
Ver original
  1. CREATE TABLE #Seccion (
  2.   Codigo_Seccion INT NOT NULL,
  3.   Nombre VARCHAR(45))
  4.  
  5. INSERT INTO #seccion VALUES (1,'Seccion1')
  6. INSERT INTO #seccion VALUES (2,'Seccion1')
  7. INSERT INTO #seccion VALUES (3,'Seccion1')
  8. INSERT INTO #seccion VALUES (4,'Seccion1')
  9. INSERT INTO #seccion VALUES (5,'Seccion1')
  10. INSERT INTO #seccion VALUES (6,'Seccion1')
  11.  
  12. CREATE TABLE #Articulo (
  13.   Codigo_Articulo INT NOT NULL ,
  14.   Codigo_Seccion INT NOT NULL,
  15.   Nombre VARCHAR(45))
  16.  
  17. INSERT INTO #articulo VALUES (1,1,'Art1')
  18. INSERT INTO #articulo VALUES (2,1,'Art1')
  19. INSERT INTO #articulo VALUES (3,1,'Art1')
  20. INSERT INTO #articulo VALUES (2,2,'Art2')
  21. INSERT INTO #articulo VALUES (7,2,'Art2')
  22. INSERT INTO #articulo VALUES (3,3,'Art3')
  23. INSERT INTO #articulo VALUES (8,3,'Art3')
  24. INSERT INTO #articulo VALUES (4,4,'Art4')
  25. INSERT INTO #articulo VALUES (9,4,'Art4')
  26. INSERT INTO #articulo VALUES (5,5,'Art5')
  27. INSERT INTO #articulo VALUES (10,5,'Art5')
  28. INSERT INTO #articulo VALUES (6,6,'Art6')
  29. INSERT INTO #articulo VALUES (11,6,'Art6')
  30.  
  31.  
  32. CREATE TABLE #Pedido (
  33. ID_Pedido INT NOT NULL,
  34. Codigo_Articulo INT NOT NULL ,
  35. DNI_Cliente VARCHAR(16) NOT NULL)
  36.  
  37. INSERT INTO #pedido VALUES (1,1,'11234')
  38. INSERT INTO #pedido VALUES (2,2,'11234')
  39. INSERT INTO #pedido VALUES (3,3,'11234')
  40. INSERT INTO #pedido VALUES (4,4,'11234')
  41. INSERT INTO #pedido VALUES (5,5,'11234')
  42. INSERT INTO #pedido VALUES (6,5,'11234')
  43. INSERT INTO #pedido VALUES (7,1,'11234')
  44.  
  45. INSERT INTO #pedido VALUES (1,1,'11235')
  46. INSERT INTO #pedido VALUES (1,2,'11235')
  47. INSERT INTO #pedido VALUES (1,3,'11235')
  48. INSERT INTO #pedido VALUES (1,3,'11235')
  49. INSERT INTO #pedido VALUES (1,3,'11235')
  50. INSERT INTO #pedido VALUES (1,4,'11235')
  51. INSERT INTO #pedido VALUES (1,5,'11235')
  52. INSERT INTO #pedido VALUES (1,6,'11235')
  53.  
  54.  
  55. CREATE TABLE #Cliente (
  56.   DNI_Cliente VARCHAR(45) NOT NULL ,
  57.  Nombre VARCHAR(45) )
  58.  
  59.  INSERT INTO #cliente VALUES ('1234','Libras')
  60.  INSERT INTO #cliente VALUES ('12345','Libras1')
  61.  
  62.  
  63. SELECT * FROM(
  64. SELECT dni_cliente,Codigo_Seccion, COUNT(codigo_seccion) AS total FROM(
  65. SELECT DISTINCT DNI_Cliente,Codigo_Seccion,t2.Codigo_Articulo FROM #pedido AS t1
  66. LEFT JOIN #Articulo AS t2 ON (t1.Codigo_Articulo=t2.Codigo_Articulo)
  67. ) AS t3
  68. GROUP BY Codigo_Seccion,DNI_Cliente
  69. ) AS t4
  70. LEFT JOIN (SELECT COUNT(*) total, Codigo_Seccion FROM #articulo GROUP BY codigo_seccion) AS t5 ON (t4.total=t5.total AND t4.Codigo_Seccion=t5.Codigo_Seccion)
  71. WHERE t5.total IS NOT NULL AND t5.Codigo_Seccion IS NOT NULL

si vemos los datos los 2 usuarios han comprado los 3 productos de la seccion 1, pero ninguno ha comprado los 2 productos de las demas secciones por lo que solo aparecerian los datos de la seccion1

dni_cliente Codigo_Seccion total total Codigo_Seccion
11234 1 3 3 1
11235 1 3 3 1

La consulta no es "tan sencilla" como te han dicho, si fuera tan sencilla porque nada mas yo te estoy poniendo queries ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me