Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Consulta me devuelve los resultados duplicados

Estas en el tema de Consulta me devuelve los resultados duplicados en el foro de Mysql en Foros del Web. Estoy haciendo esta consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT a.fecha , a.cantidad , a.devuelto , b.nombre , b.precio FROM movimiento a INNER JOIN ...
  #1 (permalink)  
Antiguo 17/12/2015, 09:49
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Consulta me devuelve los resultados duplicados

Estoy haciendo esta consulta:

Código MySQL:
Ver original
  1. SELECT a.fecha, a.cantidad, a.devuelto, b.nombre, b.precio FROM movimiento a INNER JOIN  equipo b
  2. WHERE cliente_idcliente = '1' AND obra_idobra = '1'

y estas son mis tablas

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `equipo` (
  2.   `idequipo` int(11) NOT NULL AUTO_INCREMENT,
  3.   `nombre` varchar(45) NOT NULL,
  4.   `marca` varchar(45) NOT NULL,
  5.   `fecha_creacion` date NOT NULL,
  6.   `cantidad` int(11) NOT NULL,
  7.   `categoria_equipo_idcategoria_equipo` int(11) NOT NULL,
  8.   `precio` int(11) NOT NULL,
  9.   PRIMARY KEY (`idequipo`),
  10.   KEY `fk_equipo_categoria_equipo1_idx` (`categoria_equipo_idcategoria_equipo`)
  11.  
  12. --
  13. -- Volcado de datos para la tabla `equipo`
  14. --
  15.  
  16. INSERT INTO `equipo` (`idequipo`, `nombre`, `marca`, `fecha_creacion`, `cantidad`, `categoria_equipo_idcategoria_equipo`, `precio`) VALUES
  17. (12, 'Aspiradora Industrial', 'Electrolux', '2015-12-10', 5, 1, 600),
  18. (13, 'Hidrolavadora Eléctrica', 'Electrolux', '2015-12-10', 4, 1, 550),
  19. (15, 'Aspiradora Industrial', 'Mikasa', '2015-12-13', 4, 1, 450);
  20.  
  21. -- --------------------------------------------------------
  22.  
  23. --
  24. -- Estructura de tabla para la tabla `movimiento`
  25. --
  26.  
  27. CREATE TABLE IF NOT EXISTS `movimiento` (
  28.   `idmovimiento` int(11) NOT NULL AUTO_INCREMENT,
  29.   `fecha` date DEFAULT NULL,
  30.   `cliente_idcliente` int(11) NOT NULL,
  31.   `equipo_idequipo` int(11) NOT NULL,
  32.   `categoria_equipo_idcategoria_equipo` int(11) NOT NULL,
  33.   `obra_idobra` int(11) NOT NULL,
  34.   `mov_creado` datetime DEFAULT NULL,
  35.   `creadopor` varchar(45) DEFAULT NULL,
  36.   `cantidad` int(11) DEFAULT NULL,
  37.   `fechadevuelto` date DEFAULT NULL,
  38.   `devuelto` int(11) DEFAULT NULL,
  39.   PRIMARY KEY (`idmovimiento`),
  40.   KEY `fk_movimiento_cliente1_idx` (`cliente_idcliente`),
  41.   KEY `fk_movimiento_equipo1_idx` (`equipo_idequipo`),
  42.   KEY `fk_movimiento_categoria_equipo1_idx` (`categoria_equipo_idcategoria_equipo`),
  43.   KEY `fk_movimiento_obra1_idx` (`obra_idobra`)
  44.  
  45. --
  46. -- Volcado de datos para la tabla `movimiento`
  47. --
  48.  
  49. INSERT INTO `movimiento` (`idmovimiento`, `fecha`, `cliente_idcliente`, `equipo_idequipo`, `categoria_equipo_idcategoria_equipo`, `obra_idobra`, `mov_creado`, `creadopor`, `cantidad`, `fechadevuelto`, `devuelto`) VALUES
  50. (20, '2015-12-17', 1, 13, 1, 1, '2015-12-17 10:10:39', 'Cesar', 2, NULL, 1),
  51. (21, '2015-12-17', 1, 12, 1, 1, '2015-12-17 10:11:16', 'Cesar', 2, NULL, 1),
  52. (22, '2015-12-17', 1, 15, 1, 1, '2015-12-17 10:12:05', 'Cesar', 3, NULL, 0),
  53. (23, '0000-00-00', 2, 13, 1, 3, '2015-12-17 10:32:33', 'Cesar', 3, NULL, 0);
  54.  
  55. --
  56. -- Restricciones para tablas volcadas
  57. --
  58.  
  59. --
  60. -- Filtros para la tabla `equipo`
  61. --
  62. ALTER TABLE `equipo`
  63.   ADD CONSTRAINT `fk_equipo_categoria_equipo1` FOREIGN KEY (`categoria_equipo_idcategoria_equipo`) REFERENCES `categoria_equipo` (`idcategoria_equipo`) ON DELETE CASCADE ON UPDATE CASCADE;
  64.  
  65. --
  66. -- Filtros para la tabla `movimiento`
  67. --
  68. ALTER TABLE `movimiento`
  69.   ADD CONSTRAINT `fk_movimiento_categoria_equipo1` FOREIGN KEY (`categoria_equipo_idcategoria_equipo`) REFERENCES `categoria_equipo` (`idcategoria_equipo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  70.   ADD CONSTRAINT `fk_movimiento_cliente1` FOREIGN KEY (`cliente_idcliente`) REFERENCES `cliente` (`idcliente`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  71.   ADD CONSTRAINT `fk_movimiento_equipo1` FOREIGN KEY (`equipo_idequipo`) REFERENCES `equipo` (`idequipo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  72.   ADD CONSTRAINT `fk_movimiento_obra1` FOREIGN KEY (`obra_idobra`) REFERENCES `obra` (`idobra`) ON DELETE NO ACTION ON UPDATE NO ACTION;

como lo ven, en movimientos solo tengo 4 registros, sin embargo al momento de ejecutar la consulta,me entrega los resultados que corresponden pero los repite, es decir, no me entrega 3
__________________
Say no more.......

Última edición por gnzsoloyo; 17/12/2015 a las 13:52
  #2 (permalink)  
Antiguo 17/12/2015, 13:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta me devuelve los resultados duplicados

No estás relacionando nada con nada, por lo que el JOIN está operando como producto cartesiano... Te has olvidado en ON...
Código MySQL:
Ver original
  1. SELECT a.fecha, a.cantidad, a.devuelto, b.nombre, b.precio
  2. FROM movimiento a INNER JOIN  equipo b ON a.equipo_idequipo = b.idequipo
  3. WHERE cliente_idcliente =1
  4.      AND obra_idobra = 1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/12/2015, 14:24
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consulta me devuelve los resultados duplicados

Efectivamente, gracias gnzsoloyo, lo he solucionado de la siguiente manera

Código MySQL:
Ver original
  1. SELECT nombre, precio, fecha, cantidadm, devuelto, equipo_idequipo
  2. FROM movimiento INNER JOIN equipo ON idequipo = equipo_idequipo
  3. AND movimiento.cliente_idcliente = '$cliente' AND movimiento.obra_idobra = '$obra'
__________________
Say no more.......

Última edición por gnzsoloyo; 17/12/2015 a las 14:32
  #4 (permalink)  
Antiguo 17/12/2015, 14:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta me devuelve los resultados duplicados

No es optimo en MySQL poner en el ON del FROM condiciones que deben estar en el WHERE.
Código MySQL:
Ver original
  1. SELECT nombre, precio, fecha, cantidadm, devuelto, equipo_idequipo
  2. FROM movimiento M INNER JOIN equipo E ON idequipo = equipo_idequipo
  3. WHERE M.cliente_idcliente = '$cliente' AND M.obra_idobra = '$obra'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: devuelve, duplicados, fecha, join, registros, resultados, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:11.