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

SELECT sin repetidos.

Estas en el tema de SELECT sin repetidos. en el foro de Mysql en Foros del Web. Existe alguna forma de decirle a Mysql que no me envíe registros repetidos en la selección que hice(SELECT)?...
  #1 (permalink)  
Antiguo 15/10/2012, 04:04
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
SELECT sin repetidos.

Existe alguna forma de decirle a Mysql que no me envíe registros repetidos en la selección que hice(SELECT)?
  #2 (permalink)  
Antiguo 15/10/2012, 04:15
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: SELECT sin repetidos.

¿No sé si querrás hacer uso de DISTINCT tal vez? Porque registros repetidos no es igual a campos repetidos.
__________________
(:
  #3 (permalink)  
Antiguo 15/10/2012, 04:21
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, 5 meses
Puntos: 2658
Respuesta: SELECT sin repetidos.

Todo es posible, pero sin conocer cómo es la sentencia, o a qué le estás llamando "datos repetidos", es una pregunta abstracta. Con tan poca información no es seguro cómo ayudarte.
El detalle de "a qué le llamas" es porque es muy usual que en los JOIN exista repetición de algunos valores de algunas columnas, cuando existe una relación 1:N entre dos tablas, pero eso no implica repetición de datos, en tanto el resto de los valores no se repita.
Los registros no se evalúan como iguales si se repiten algunos valores de algunas columnas. Son repetidos cuando todos los valores de todas las columnas se repiten entre dos o más registros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/10/2012, 06:47
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: SELECT sin repetidos.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Todo es posible, pero sin conocer cómo es la sentencia, o a qué le estás llamando "datos repetidos", es una pregunta abstracta. Con tan poca información no es seguro cómo ayudarte.
El detalle de "a qué le llamas" es porque es muy usual que en los JOIN exista repetición de algunos valores de algunas columnas, cuando existe una relación 1:N entre dos tablas, pero eso no implica repetición de datos, en tanto el resto de los valores no se repita.
Los registros no se evalúan como iguales si se repiten algunos valores de algunas columnas. Son repetidos cuando todos los valores de todas las columnas se repiten entre dos o más registros.


Datos: tengo Mysql 5.5.16 en mi Wamp server y trabajo con el Motor de almacenamiento InnoDB.

Me sucede que la última fila de una tabla mysql(o todas) se me se repite dos veces, una de ellas oculta. Es lo que me parece sucede y quisiera saber cómo solucionarlo.

Más: tengo una tabla mysql con 526 filas(entrada de 5 números cada una), luego inserto otra fila con código php, reviso phpmyadmin y todo bien.... Creo un programa para analizar repeticiones de números en la tabla mysql, el mismo hace dos tablas, una con la anterior data y otra con la nueva y sucede q al fijarme en todos los números, los últimos que ingresé aparecen corridos dos lugares en la segunda tabla(en ves de un lugar), como si fueran leídos doble. Les comento q *el código php lo probé por mi cuenta con otros datos y funciona bien..[/B]

Acá subí la imagen http://tinypic.com/r/2elxtva/6
En verde mi último registro. Sin verde la tabla nueva.
Me he dado cuenta que no hay repeticiones impares(Abajo en rojo, q son las repeticiones de cada número), parece que recibo todos los registros dobles desde Mysql.... Cuando veo la tabla mysql desde phpmyadmin todo se ve bien.
  #5 (permalink)  
Antiguo 15/10/2012, 07:22
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, 5 meses
Puntos: 2658
Respuesta: SELECT sin repetidos.

La verdad, no se entiende mucho lo que planteas, porque la imagen en sí tampoco se entiende. No sé qué es o qué pretende representar.
de lo que si estoy totalmente seguro es que esa tabla no es resultado de una consulta en SQL, porque una tabl a resultado no puede tener diferentes cantidades de registros por cada columna...
Cita:
Cuando veo la tabla mysql desde phpmyadmin todo se ve bien.
Esto me lleva a inferir que la tabla cuya imagen estás linkeando no es una tabla de MySQL, sino que la obtienes a través de programación. En ese caso, lo mas probable (considerando que en la base está OK) es que haya un error de programación, pero eso es OFF-TOPIC en este foro.
La única duda es si el problema se originará en una consulta mal hecha (que no estás posteando), o bien solamente en la programación.
Mi sugerencia:
1) Postea las consultas en SQL que haces. No postees código que no sea SQL.
2) Explica con más claridad qué representa esa tabla y con qué datos se supone que la obtienes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/10/2012, 08:38
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: SELECT sin repetidos.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La verdad, no se entiende mucho lo que planteas, porque la imagen en sí tampoco se entiende. No sé qué es o qué pretende representar.
de lo que si estoy totalmente seguro es que esa tabla no es resultado de una consulta en SQL, porque una tabl a resultado no puede tener diferentes cantidades de registros por cada columna...
Esto me lleva a inferir que la tabla cuya imagen estás linkeando no es una tabla de MySQL, sino que la obtienes a través de programación. En ese caso, lo mas probable (considerando que en la base está OK) es que haya un error de programación, pero eso es OFF-TOPIC en este foro.
La única duda es si el problema se originará en una consulta mal hecha (que no estás posteando), o bien solamente en la programación.
Mi sugerencia:
1) Postea las consultas en SQL que haces. No postees código que no sea SQL.
2) Explica con más claridad qué representa esa tabla y con qué datos se supone que la obtienes.
Si lees bien donde dice: Más... Ahí esta bien explicado.. Y abajo, lo que representa cada celda de la tabla(con eso+algo de lógica mirando las tablas, creo se puede entender). En mi código php no hay error porque lo he probado con datos puestos por mi en un array, y se logran números impares en las celdas rojas, y los saltos en la segunda tabla son de un lugar y no de a dos..... Para q entiendas mejor fíjate en los números en verde como en la tabla de abajo están corridos dos lugares y sólo hice una entrada con ellos, me disculpas mi lenguaje no técnico.

Acá la consulta.
$buscar = "SELECT jugadas.uno,jugadas.dos,jugadas.tres,jugadas.cuatr o,jugadas.cinco FROM jugadas ORDER BY jugadas.jugadaid";

Última edición por alex760125; 15/10/2012 a las 10:45
  #7 (permalink)  
Antiguo 15/10/2012, 10:54
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, 5 meses
Puntos: 2658
Respuesta: SELECT sin repetidos.

Vamos a ver si se entienden mis observaciones:
1) Insercion de datos:
Cita:
tengo una tabla mysql con 526 filas(entrada de 5 números cada una), luego inserto otra fila con código php, reviso phpmyadmin y todo bien....
O sea que no hay fallos en los INSERT, ni problemas aparentes de ordenamiento.

2) Visualización:
Cita:
Creo un programa para analizar repeticiones de números en la tabla mysql, el mismo hace dos tablas, una con la anterior data y otra con la nueva y sucede q al fijarme en todos los números, los últimos que ingresé aparecen corridos dos lugares en la segunda tabla(en ves de un lugar), como si fueran leídos doble.
Si el programa ordena la tabla visualmente, entonces el problema no está en la consulta, sino en la forma de generarse la vista en pantalla.

3) Datos en la base:
Cita:
Cuando veo la tabla mysql desde phpmyadmin todo se ve bien.
Confirma que no hay errores en la base de datos, ni en los datos almacenados.

4) Consulta en SQL:
Código MySQL:
Ver original
  1.     jugadas.uno,
  2.     jugadas.dos,
  3.     jugadas.tres,
  4.     jugadas.cuatro,
  5.     jugadas.cinco
  6. FROM jugadas
  7. ORDER BY jugadas.jugadaid
La consulta es correcta, pero salta a la vista que devuelve sólo cinco columnas, por lo que si la comparo con la imagen:


no es igual, ya que en ella hay veintiuno (21) en un caso y veinte (20) en el otro.

De esto deduzco que:

1) La vista no representa la consulta, sino un ordenamiento definido en programación. De este ordenamiento no es posible establecer nada, porque la lógica de su algoritmo no resulta deducible a partir de la imagen (traducción: viendo la tabla no se entiende en base a qué se ordena y se agrupa).
2) Hay una discrepancia entre las dos tablas visualizadas, lo que puede generar una distorsión en el ordenamiento de los valores en función de la existencia de una columna más en uno respecto al otro esquema.

En esas condiciones:

1) Tu problema no es de SQL, ni de Base de Datos, sino de implementación de la tabla en el programa. Y eso es off-topic.
2) Deberías hacer una prueba de escritorio siguiendo la lógica de generación del esquema visual, para detectar en qué condiciones ese código genera un salto de dos posiciones, cuando debería ser de uno, según dices.

En todo caso, creo que en el foro de programación del lenguaje usado pueden ayudarte mejor con eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 15/10/2012, 11:49
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: SELECT sin repetidos.

Disculpa que insista en que leas bien. Yo escribí que había revisado mi código php con valores puestos por mi en un array y todo sale correcto, de lo cual deduzco que es problema con Mysql, que cuenta dos veces cada fila. Y mi única pregunta es: Existe alguna orden que le diga a la consulta que no repita el conteo de filas?
  #9 (permalink)  
Antiguo 15/10/2012, 12:30
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, 5 meses
Puntos: 2658
Respuesta: SELECT sin repetidos.

Te hice objeciones, pero no me refutas ninguna. Se vuelve difícil un intercambio de análisis si no me respondes.

En primer lugar: Leí bien, pero tu ejemplo posteado (la imagen), no sirve para visualizar el origen del problema, si es que tiene relación con el SQL. Todo apunta a que no lo tiene.

En segundo lugar, si bien existe una forma de indicar que no se muestren registros repetidos, o no se cuenten valores repetidos, tu en la consulta ni estás contando registros, ni estás contando valores. Por ende, tampoco aplica.
Lo que yo estoy tratando de hacer es comprender qué datos tiene la tabla que puedan ocasionar estas supuestas"repeticiones" que no se ven en los gráficos posteados. Porque no hay dos líneas consecutivas que tengan los mismos valores en las mismas columnas, que es lo que en BBDD se considera una repetición.

Evidentemente no quieres aportar ni los datos concretos, ni tampoco quieres explicar qué estas haciendo, para poder guiarte mejor, y lo que dices no me lo aclara.
Te insisto: Por mas que leo (y te aseguro que me dedico precisamente al análisis de BBDD), no veo ni entiendo lo que estás trabajando, por tanto no encuentro qué puede originar tu problema.
Y si no se puede determinar qué lo origina, es difícil decirte como evitarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 15/10/2012, 13:14
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: SELECT sin repetidos.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Vamos a ver si se entienden mis observaciones:
1) Insercion de datos: O sea que no hay fallos en los INSERT, ni problemas aparentes de ordenamiento.

2) Visualización:
Si el programa ordena la tabla visualmente, entonces el problema no está en la consulta, sino en la forma de generarse la vista en pantalla.

3) Datos en la base:
Confirma que no hay errores en la base de datos, ni en los datos almacenados.

4) Consulta en SQL:
Código MySQL:
Ver original
  1.     jugadas.uno,
  2.     jugadas.dos,
  3.     jugadas.tres,
  4.     jugadas.cuatro,
  5.     jugadas.cinco
  6. FROM jugadas
  7. ORDER BY jugadas.jugadaid
La consulta es correcta, pero salta a la vista que devuelve sólo cinco columnas, por lo que si la comparo con la imagen:


no es igual, ya que en ella hay veintiuno (21) en un caso y veinte (20) en el otro.

De esto deduzco que:

1) La vista no representa la consulta, sino un ordenamiento definido en programación. De este ordenamiento no es posible establecer nada, porque la lógica de su algoritmo no resulta deducible a partir de la imagen (traducción: viendo la tabla no se entiende en base a qué se ordena y se agrupa).
2) Hay una discrepancia entre las dos tablas visualizadas, lo que puede generar una distorsión en el ordenamiento de los valores en función de la existencia de una columna más en uno respecto al otro esquema.

En esas condiciones:

1) Tu problema no es de SQL, ni de Base de Datos, sino de implementación de la tabla en el programa. Y eso es off-topic.
2) Deberías hacer una prueba de escritorio siguiendo la lógica de generación del esquema visual, para detectar en qué condiciones ese código genera un salto de dos posiciones, cuando debería ser de uno, según dices.

En todo caso, creo que en el foro de programación del lenguaje usado pueden ayudarte mejor con eso.
Qué voy a responderte entonces?

En esas condiciones: 2) te la he respondido varias veces, ya hice esa prueba y todo sale bien.
Pequeña muestra de la tabla Mysql http://i49.tinypic.com/2hzs5j5.jpg
  #11 (permalink)  
Antiguo 15/10/2012, 15:18
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: SELECT sin repetidos.

que numero es el que no quieres que se repita , si manejas el id como autoincrementable y como llave primaria no debera repetir algun registro , si lo que buscas es que no se repita algun valor de columna puedes utilizar el distinct y analizar cuales id son los que son repetidos al ser los id omitidos en base al criterio de select , otra forma es por un group by , en cualquiera de los casos son consultas muy simples y estoy seguro mysql no causa error alguno , en el remoto caso en el que se causan algun tipo de redundancia es en joins mal planteados pero al ser aqui una unica tabla no debe darte errores , otra posibilidad es que no estes planteando el fin real de la consulta que quieres , pongamos las cosas desde este punto

1-consulta que no repita valor por columna especifica

2-consulta que obtenga registros con valores identicos entre columnas

3-consulta que tenga un valor especifico relacionado con columna

de no ser algun caso asi , como el compañero te lo ha dicho antes es problable que el error que tienes es el procesamiento de los datos por medio de tu programa , el cual supongo esta en php , motivo por el cual quedaria descartado de este apartado y deberias publicar la duda y el codigo de tu programa que genera tu imagen en el apartado correspondiente
  #12 (permalink)  
Antiguo 15/10/2012, 15:29
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: SELECT sin repetidos.

Cita:
Iniciado por fahs82 Ver Mensaje
que numero es el que no quieres que se repita , si manejas el id como autoincrementable y como llave primaria no debera repetir algun registro , si lo que buscas es que no se repita algun valor de columna puedes utilizar el distinct y analizar cuales id son los que son repetidos al ser los id omitidos en base al criterio de select , otra forma es por un group by , en cualquiera de los casos son consultas muy simples y estoy seguro mysql no causa error alguno , en el remoto caso en el que se causan algun tipo de redundancia es en joins mal planteados pero al ser aqui una unica tabla no debe darte errores , otra posibilidad es que no estes planteando el fin real de la consulta que quieres , pongamos las cosas desde este punto

1-consulta que no repita valor por columna especifica

2-consulta que obtenga registros con valores identicos entre columnas

3-consulta que tenga un valor especifico relacionado con columna

de no ser algun caso asi , como el compañero te lo ha dicho antes es problable que el error que tienes es el procesamiento de los datos por medio de tu programa , el cual supongo esta en php , motivo por el cual quedaria descartado de este apartado y deberias publicar la duda y el codigo de tu programa que genera tu imagen en el apartado correspondiente
Ya lo he planteado en PHP, por si quieres verlo. Se llama Problemas con incremento de variables.

Etiquetas: registros, select, sql
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 03:47.