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

Selección de todos aquellos registros en una lista

Estas en el tema de Selección de todos aquellos registros en una lista en el foro de Bases de Datos General en Foros del Web. Hola, quizá no séa como describo en el título del hilo lo que pretendo hacer pero creo que la explicación se asemeja. Perdonadme por la ...
  #1 (permalink)  
Antiguo 23/03/2009, 14:56
 
Fecha de Ingreso: marzo-2009
Ubicación: Valladolid
Mensajes: 3
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta Selección de todos aquellos registros en una lista

Hola, quizá no séa como describo en el título del hilo lo que pretendo hacer pero creo que la explicación se asemeja. Perdonadme por la extensión del texto y espero que podáis ayudarme.

Tengo 3 tablas:
- TABLA1 contiene únicamente num_elemento y es único
- TABLA2 contiene 2 campos id_elemento y valor. Puede haber vários id_elemento y se corresponde con num_elemento. Por lo tanto por cada num_elemento tendrá varios valores.
- TABLA3 es una lista fija de valores correspondiente a valor.

Visualmente sería así, perdonad los puntos de TABLA2, es por alineamiento:

TABLA1
---------------
num_elemento
1
2
3
4
5

TABLA2
------------------------
id_elemento | valor
1.....................15
2.....................30
2.....................35
2.....................40
3.....................15
3.....................35

TABLA3
---------------
valor
30
35
40
17

Pretendo sacar aquellos num_elemento tales que TODOS los valor esten contenidos en TABLA3.
Por lo tanto en el ejemplo que os muestro el resultado que quiero obtener es num_elemento = 2 ya que es el único que cumple que TODOS sus valores estan en TABLA3.

Estoy utilizando Sybase 12.5 y ando muy perdidoya que no puedo usar cursores para ir elemento a elemento y mirando por cada elemento en la TABLA3 sus valores, por lo que intento hacerlo en una sola query, o a lo sumo 2 pero no encuentro solución por lo que pido vuesta ayuda.

Muchísimas gracias.

Última edición por Cybertoy; 23/03/2009 a las 15:09
  #2 (permalink)  
Antiguo 24/03/2009, 15:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Selección de todos aquellos registros en una lista

No lo he probado todo, pero creo que una consulta sql como ésta puede localizártelo:

Código sql:
Ver original
  1. SELECT DISTINCT id_elemento FROM `tabla2` INNER JOIN tabla3 ON tabla2.valor = tabla3.valor
  2.   WHERE id_elemento NOT IN
  3.    (SELECT id_elemento FROM tabla2 LEFT JOIN tabla3 ON tabla2.valor = tabla3.valor
  4.    WHERE tabla3.valor IS NULL)

Te busca los elementos distintos que se unen mediante inner join con la tabla3 y que a la vez su id_elemento no deja null en un cruce left join con dicha tabla, es decir, que no incluye valores no presentes en dicha tabla.

Última edición por jurena; 26/03/2009 a las 06:35
  #3 (permalink)  
Antiguo 25/03/2009, 10:08
 
Fecha de Ingreso: marzo-2009
Ubicación: Valladolid
Mensajes: 3
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Selección de todos aquellos registros en una lista

Muchísimas gracias me ha sido de gran ayuda.

Gracias.
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 11:23.