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

Condicion where complicada

Estas en el tema de Condicion where complicada en el foro de Mysql en Foros del Web. Hola a todos. tengo el siguiente esquema en el cual necesito extraer unos datos. Tabla1 cod1 descrip1 1 UNO 2 DOS 3 TRES tabla2 cod2 ...
  #1 (permalink)  
Antiguo 08/02/2012, 12:08
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Condicion where complicada

Hola a todos.

tengo el siguiente esquema en el cual necesito extraer unos datos.

Tabla1
cod1 descrip1
1 UNO
2 DOS
3 TRES

tabla2
cod2 descrip2
A-1 A
B-1 B
C-1 C

tabla3
cod1 cod2
1 A-1
1 B-1
2 A-1
2 B-1
3 A-1
3 C-1

El problema es: Obtener los datos que tengan A-1 y B-1
con lo que el resultado seria el siguiente:
cod1 cod2
1 A-1
1 B-1
2 A-1
2 B-1

En el caso del 3 A-1 y 3 C-1, no aparecerían por que 3 no tiene B-1, solo A-1 y para que aparezca necesitaria que tuviera los dos A-1 y B-1

Espero haberme dado a entender mi necesidad.

Gracias de antemano.
  #2 (permalink)  
Antiguo 08/02/2012, 12:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Condicion where complicada

Te has dado a entender, y para eso tienes que buscar agrupar y contar. Lo haremos sólo con la tabla 3
SELECT cod1, count(*) valor FROM tabla3 WHERE cod2 IN ( 'A-1', 'B-1') GROUP BY cod1 HAVING valor = 2
  #3 (permalink)  
Antiguo 08/02/2012, 15:14
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Condicion where complicada

Muchas gracias Jurena, exactamente lo que necesitaba, solo tuve que hacer un par de modificaciones para adecuarlas a mis tablas que eran mas de las tres que puse de ejemplo y la condición de más de 2, puesto que la cantidad de comparaciones varia.

Problema resuelto gracias
  #4 (permalink)  
Antiguo 10/02/2012, 16:11
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Condicion where complicada

Buenas.

Me surgio otro inconveniente con la consulta que trato de resolver.

hasta el momento hace lo que pregunte, pero se me da el caso de que necesito exactamente que cumpla con la condicion, es decir que si yo digo:
select cod1 from tablas where cod2 in('1','2', '3');

necesito que regrese los que cumplen con las tres y no solo con alguna de ellas.
  #5 (permalink)  
Antiguo 10/02/2012, 16:42
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Condicion where complicada

Creo que puedo resolverlo de la siguiente manera, si alguien se le ocurre algo diferente, no duden en comentarlo.

tendre que hacer que la condicion: having valor=?
donde ? sera la cantidad de parametros que ponga en where cod1 in ('1','2').
asi tendra que devolverme exactamente los registros que tengan cada uno de los condicionantes.

por ejemplo.

select cod1,count(*) valor from tabla3 where cod2 in ('1','2','3')
group by cod1 having valor=3

3 condicionales (1,2,3)
valor=3

espero sus comentarios.
  #6 (permalink)  
Antiguo 17/02/2012, 12:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Condicion where complicada

Perdona, LENINCASCO,
no sabía que seguías en este post.

Código MySQL:
Ver original
  1. select cod1,count DISTINCT (cod2) valor from tabla3 where cod2 in ('1','2','3')
  2. group by cod1 having valor=3

Etiquetas: 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 22:04.