Foros del Web » Programando para Internet » PHP »

Datos duplicados

Estas en el tema de Datos duplicados en el foro de PHP en Foros del Web. Wenas,, Estoy haciendo una consulta con 3 JOIN, al listar los resultados salen correctamente pero cuando filtro me salen los datos duplicados asi tengo el ...
  #1 (permalink)  
Antiguo 15/02/2014, 11:44
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Datos duplicados

Wenas,,

Estoy haciendo una consulta con 3 JOIN, al listar los resultados salen correctamente pero cuando filtro me salen los datos duplicados asi tengo el còdigo:

Código MySQL:
Ver original
  1. SELECT *, c.id as ids FROM caja as c JOIN caja_articulos as a ON c.id=a.caja_id   JOIN stock as s ON a.idarticulo=s.id WHERE (c.id LIKE "%21321%" or s.articulo LIKE "%21321%" or c.codigo LIKE "%21321%") AND c.eliminado=0 ORDER BY c.fecha DESC

Asi sale la consulta:






No entiendo porque me sale el mismo resultado 2 veces.

Última edición por Maganius; 15/02/2014 a las 11:49
  #2 (permalink)  
Antiguo 15/02/2014, 12:17
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Datos duplicados

Puedes hacer un una sentencia SELECT DISTINCT... o tal vez estés imprimiendo esos datos varias veces con PHP.
  #3 (permalink)  
Antiguo 15/02/2014, 12:20
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Datos duplicados

esto debe ser por que en una tabla tienes dos o más registros con la misma clave por la que estás uniendo las tablas.

Por ejemplo, una tabla de ventas que unes ala tabla de usuarios por el nombre.

Una fila de venta podría repetirse si en la tabla usuarios tienes dos o más usuarios con el mismo nombre, por ejemplo juan

producto, cantidad, vendedor
AC345, 5 , JUAN //juan diaz
AC345, 5 , JUAN//juan fernandez
  #4 (permalink)  
Antiguo 15/02/2014, 12:36
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Datos duplicados

Gracias por responder phperos, ocp001a

PHPeros

En php hago un simple while para mostrar los datos.

ocp001a

Las tablas las uno con el id de esta forma:

caja -> id = caja_articulos -> caja_id

caja_articulos -> idarticulo = stock -> id

es como dices en la tabla caja_articulos se puede repetir miles de veces el nombre "juan"

y tal vez por eso me repita la consulta tantas veces este el nombre juan.

Como podría evitar esto?

Quiero que salga igual al hacer esto:

Select * FROM caja LIKE nombre "%jua%";

Articulo encontrado -> juan
  #5 (permalink)  
Antiguo 15/02/2014, 12:55
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Datos duplicados

En este caso como dice PHPeros, podrías auxiliarte con select distinct, para que te de resultados únicos
  #6 (permalink)  
Antiguo 15/02/2014, 13:41
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Datos duplicados

Intente con el DISTINCT pero no me funciono es como si en la consulta entreverara algunos datos sale cualquier cosa, lo intente asi:

Código MySQL:
Ver original
  1. SELECT DISTINCT(c.id), c.id as ids,c.*,a.*,s.* FROM caja as c JOIN caja_articulos as a ON c.id=a.caja_id JOIN stock as s ON a.idarticulo=s.id WHERE (c.id LIKE "%21321%" or s.articulo LIKE "%21321%" or c.codigo LIKE "%21321%") AND c.eliminado=0 ORDER BY c.fecha DESC

No entiendo porque salen datos duplicados

Por ejemplo

Si en stock tengo 4 veces el nombre juan pero solo tengo 2 registros en la tabla caja cuando hago la consulta me salen los 4 registros pero con datos intercalados de la tabla caja se me hiso un entrevero el filtro
  #7 (permalink)  
Antiguo 15/02/2014, 15:49
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: Datos duplicados

Cita:
Si en stock tengo 4 veces el nombre juan pero solo tengo 2 registros en la tabla caja cuando hago la consulta me salen los 4 registros pero con datos intercalados de la tabla caja se me hiso un entrevero el filtro
Ese tipo de comportamientos es habitual con JOINs mal armados o condiciones ON incompletas y/omal colocadas, y también cuando no se comprende correctamente los resultados que el JOIN devuelve.
Para darte un buen diagnóstico deberíamos ver el CREATE TABLE de cada tabla involucrada, y una muestra de los datos contenidos en cada tabla, que se relacionen entre si.
Y de todos modos, este tema no es de PHP, sino de Base de Datos, por lo que recomendaría que pidas que lo muevan a esos foros.
Acá es off-topic (PHP no es MySQL y viceversa).
__________________
¿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: duplicados, fecha, select
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 20:54.