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

Consulta con registros coincidentes

Estas en el tema de Consulta con registros coincidentes en el foro de Mysql en Foros del Web. Saludos, tengo una consulta de seleccion de esta manera: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original select * from idiomas where IDe = 196 ; me ...
  #1 (permalink)  
Antiguo 31/10/2012, 13:04
 
Fecha de Ingreso: agosto-2011
Mensajes: 15
Antigüedad: 12 años, 8 meses
Puntos: 1
Consulta con registros coincidentes

Saludos, tengo una consulta de seleccion de esta manera:

Código MySQL:
Ver original
  1. select * from idiomas where IDe=196;

me devuelve estos resultados

nr--- IDe --- idioma---hablar---leer---escribir

13---196 ---ingles---- 90 ------80----100
14---196 ---frances-- 70 ------50-----70


Lo que quiero hacer es agregar a la consulta una condicion para que me devuelva datos solo si todos los registros coinciden, es decir:
si en la condicion establece que los idiomas deben ser iguales a 'Ingles' y 'Chino'
que no devuelva nada, puesto que ambos no coinciden.

He intentado con OR y con IN pero no funciona. Ayuda por favor.
  #2 (permalink)  
Antiguo 31/10/2012, 14:19
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta con registros coincidentes

Hola jr6084:

Este tipo de consultas se ha tratado muchas veces en el foro... creo que sería conveniente que utilizaras la herramienta de búsqueda para encontrar otros ejemplo parecidos... La idea es utilizar la Cláusula HAVING-COUNT() para determinar cuantas coincidencias hay... para tu ejemplo sería más o menos así:

Código:
SELECT * FROM tabla T1 INNER JOIN 
( SELECT IDe 
  FROM tabla 
  WHERE IDe = 196 AND idioma IN ('ingles', 'chino') 
  GROUP BY IDe
  HAVING COUNT(IDe) = 2) T2 ON T1.IDe = T2.IDe;
Observa las partes en rojo... por un lado, con la sentencia IN estás filtrando sólo los elementos que realmente te interesa evaluar... con el HAVING COUNT(IDe) = 2 estás asegurando que tenga ambos lenguajes...

Dale un vistazo para ver si es lo que necesitas

Saludos
Leo.
  #3 (permalink)  
Antiguo 31/10/2012, 16:56
 
Fecha de Ingreso: agosto-2011
Mensajes: 15
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Consulta con registros coincidentes

Muchas gracias, funciona perfectamente. Mi consulta ha quedado asi, de hecho no utilizo el join porque es una misma tabla:

Código MySQL:
Ver original
  1. Select * from idiomas where IDe=196 and
  2. idioma IN ('ingles', 'frances','') group by IDe having count(IDe)=2

Ahora mi duda es como modificar la consulta para que cada uno de los idiomas cumplan con condiciones de lectura y escritura especificas, por ejemplo que los campos hablar y leer sean mayores a 80 cuando el idioma es ingles y mayores a 60 cuando sea frances.

Muchas gracias.
  #4 (permalink)  
Antiguo 01/11/2012, 09:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta con registros coincidentes

Hola de nuevo:

Cita:
Ahora mi duda es como modificar la consulta para que cada uno de los idiomas cumplan con condiciones de lectura y escritura especificas, por ejemplo que los campos hablar y leer sean mayores a 80 cuando el idioma es ingles y mayores a 60 cuando sea frances.
En el WHERE tú puedes agregar las condiciones que necesites, separadas por los operadores AND y OR, pero haciendo un uso correcto de paréntesis, ya que tienen una jerarquía distinta...

Saludos
Leo.

Etiquetas: registros, 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 05:26.