Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/07/2015, 13:05
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?

La pregunta es que cliente ha comprado los 5 articulos, no importa la fecha de compra o que sea en un periodo determinado sino solo saber que cliente tiene compras en las 5 secciones

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,2,'Art2')
  19. INSERT INTO #articulo VALUES (3,3,'Art3')
  20. INSERT INTO #articulo VALUES (4,4,'Art4')
  21. INSERT INTO #articulo VALUES (5,5,'Art5')
  22. INSERT INTO #articulo VALUES (6,6,'Art6')
  23.  
  24.  
  25. CREATE TABLE #Pedido (
  26. ID_Pedido INT NOT NULL,
  27. Codigo_Articulo INT NOT NULL ,
  28. DNI_Cliente VARCHAR(16) NOT NULL)
  29.  
  30. INSERT INTO #pedido VALUES (1,1,'11234')
  31. INSERT INTO #pedido VALUES (2,2,'11234')
  32. INSERT INTO #pedido VALUES (3,3,'11234')
  33. INSERT INTO #pedido VALUES (4,4,'11234')
  34. INSERT INTO #pedido VALUES (5,5,'11234')
  35. INSERT INTO #pedido VALUES (6,5,'11234')
  36. INSERT INTO #pedido VALUES (7,1,'11234')
  37.  
  38. INSERT INTO #pedido VALUES (1,1,'11235')
  39. INSERT INTO #pedido VALUES (1,2,'11235')
  40. INSERT INTO #pedido VALUES (1,3,'11235')
  41. INSERT INTO #pedido VALUES (1,3,'11235')
  42. INSERT INTO #pedido VALUES (1,3,'11235')
  43. INSERT INTO #pedido VALUES (1,4,'11235')
  44. INSERT INTO #pedido VALUES (1,5,'11235')
  45. INSERT INTO #pedido VALUES (1,6,'11235')
  46.  
  47.  
  48. CREATE TABLE #Cliente (
  49.   DNI_Cliente VARCHAR(45) NOT NULL ,
  50.  Nombre VARCHAR(45) )
  51.  
  52.  INSERT INTO #cliente VALUES ('1234','Libras')
  53.  INSERT INTO #cliente VALUES ('12345','Libras1')
  54.  
  55.  
  56. SELECT * FROM(
  57. SELECT dni_cliente, COUNT(codigo_seccion) AS total FROM(
  58. SELECT DISTINCT DNI_Cliente,Codigo_Seccion FROM #pedido AS t1
  59. LEFT JOIN #Articulo AS t2 ON (t1.Codigo_Articulo=t2.Codigo_Articulo)
  60. ) AS t3
  61. GROUP BY dni_cliente
  62. ) AS t4 WHERE total=(SELECT COUNT(*) FROM #Seccion)

El resultado de este ejercicio donde son 6 secciones es el usuario Libras1

P.D: el query esta en sql server(para que no preguntes el porque los #) y use tablas temporales #, pero el codigo del query lo pudes adaptar para mysql :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me