Ver Mensaje Individual
  #14 (permalink)  
Antiguo 02/09/2009, 02:30
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta un poco rara

yazo, la consulta propuesta por 7xtr3am
select * from nombres where id in (select idnombre from opciones where opcion=15) and id in (select idnombre from opciones where opcion=14)
tiene un pequeño inconveniente (en realidad no sé si para tu caso lo es): que si el registro tiene algún otro valor en opciones además de 14 y 15 que no sea 14 ó 15, también será mostrado. Imaginemos que 1 tiene 14, 15 y 16. Esa consulta te lo mostrará. Por otra parte, supone dos subconsultas, lo que no sé si será más eficiente que el uso de where con OR y el group by con su having que te propuse (eso tendrán que decirlo los técnicos, aunque yo para estos casos prefiero usar el group by porque recorrería una vez la tabla, quizás 2 por el IN con dos elementos).
Pero si te sirve en esas condiciones, mi propuesta para el caso sería esta:
Código sql:
Ver original
  1. SELECT nombres.nombre
  2.  FROM nombres INNER JOIN opciones
  3.  ON nombres.id = opciones.idnombre WHERE opciones.opcion IN (14,15)
  4.  GROUP BY nombres.id HAVING COUNT(DISTINCT opcion) > 1

Saludos a todos.

Última edición por jurena; 02/09/2009 a las 02:38