elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Menos de x coincidencias
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Menos de x coincidencias  (Leído 2,829 veces)
XafiloX

Desconectado Desconectado

Mensajes: 130


Ver Perfil
Menos de x coincidencias
« en: 30 Julio 2010, 16:39 pm »

Hola a todos! Me gustaria saber si con una sentencia mysql se puede conseguir lo siguiente:

Tengo una tabla con dos columnas (entre otras): campo1 y campo2. Y quiero una query que me devuelva campo1 y campo2 en los cuales el numero de campo1 y campo2 iguales (ambos tienen que ser iguales) sea menor de 3 y mayor de 0.

Un ejemplo
Campo1Campo2Otros
115
024
027
258
520
250
252

Esto me deberia devolver dos resultados:
-Campo1=0 y campo2=2
-Campo1=2 y campo2=5


La verdad, no tengo ni idea de si se puede hacer. Pero si fuese posible me solucionaria un gran problema, ya que sino tendria que coger con una query toda la base de datos y luego con otro lenguaje ir procensandolo hasta en contrar las coincidencias, lo cual seria lento...

Os agradeceria cualquier ayuda!


« Última modificación: 30 Julio 2010, 18:43 pm por XafiloX » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Menos de x coincidencias
« Respuesta #1 en: 30 Julio 2010, 16:44 pm »

Código
  1. SELECT * FROM tabla
  2. WHERE Campo1=Campo2 AND Campo1>0 AND campo1<3

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
XafiloX

Desconectado Desconectado

Mensajes: 130


Ver Perfil
Re: Menos de x coincidencias
« Respuesta #2 en: 30 Julio 2010, 18:39 pm »

Hola, gracias por responder! No era eso a lo que me referia...

Lo que quiero es que me devuelva el campo1 y campo2  de aquellas filas en las que haya más de 0 y menos de 3 filas con campos iguales...Es decir, en el ejemplo anterior (que lo he cambiado para que se entienda mejor), se devolverian:
-Campo1=0 y campo2=2
-Campo1=2 y campo2=5
porque -Campo1=0 y campo2=2 se da en dos filas (más de 0 veces y menos de 3 veces) y -Campo1=2 y campo2=5 se da en 3 filas...

Es complicado de explicar... :xD
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Menos de x coincidencias
« Respuesta #3 en: 30 Julio 2010, 20:31 pm »

Lo acabo de inventar y no tengo donde probar, así que puede que funcione, como que puede que no :xD

Código
  1. SELECT campo1, Campo2, COUNT(*) AS total
  2. FROM tabla
  3. WHERE campo1 = campo2
  4. GROUP BY campo1
  5. HAVING total > 0 AND total < 3

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Menos de x coincidencias
« Respuesta #4 en: 31 Julio 2010, 07:06 am »

tuve que releer 50 veces el post para entender lo que queres, y sin embargo me quedan dudas  :xD

novlucker te entendio igual que yo al leer tu primer post, donde dijiste que campo1 y campo2 deben ser iguales, pero cuando explicas los resultados, no son iguales campo1 y campo2

si decis:

-Campo1=0 y campo2=2
-Campo1=2 y campo2=5

ahi campo 1 vale 0 y el otro vale 2 , no son iguales...lo que vos queres creo entender es listar simplemente los repetidos, que se repitan entre 0 y 3 veces, pero que los valores no sean iguales...sino el unico que cumpliria con esa condicion seria el primer registro, donde ambos son 1...me explico?

mira el select que te paso novlucker, esta bien salvo que tenes que cambiar los alias del having ya que no se pueden usar alias ahi. y sacale el "WHERE campo1 = campo2" , tambien agrega el campo2 al Group By, sino te tira error, ya que estas usando COUNT(*) arriba y debes agrupar por todo.

quedaria asi:

Código
  1. SELECT campo1, Campo2, COUNT(*) AS total
  2. FROM tabla1
  3. GROUP BY campo1, campo2
  4. HAVING COUNT(*) > 0 AND COUNT(*) < 3
  5. ORDER BY COUNT(*) DESC

ahi te devuelve:

Campo 1          Campo2         Total Repetidas
0                      2                         2
5                      2                         1
1                      1                         1

en todo caso fijate que el ultmo registro tambien entra en la condicion, ya que se repite 1 vez y eso es mayor a 0 y menor a 3...

la ultima linea del select que le agrege simplemente ordena del mayor repetido al menor...


EDITO: revisando tampoco entraria en la lista ese que vos decis que se repite 3 veces ya que vos queres que sea menor a 3 y no igual a 3...si queres que entre la cantidad 3 simplemente cambia y pone "AND COUNT(*) <= 3"

saludos.
« Última modificación: 31 Julio 2010, 07:10 am por seba123neo » En línea

XafiloX

Desconectado Desconectado

Mensajes: 130


Ver Perfil
Re: Menos de x coincidencias
« Respuesta #5 en: 1 Agosto 2010, 20:51 pm »

Ufff, ¡¡muchisimas gracias a los dos!!

Siento haberme explicado tan mal  :-[

Os agradezco mucho la ayuda. Se ve que estoy muy mal en mysql, tendré que buscarme algún manual, ya que lo unico que se son consultas sencillitas y joins...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] Findstr, ¿Como repetir coincidencias?
Scripting
Eleкtro 0 2,351 Último mensaje 17 Marzo 2012, 06:37 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines