Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2008, 04:05
datatraveler
 
Fecha de Ingreso: septiembre-2008
Mensajes: 37
Antigüedad: 15 años, 8 meses
Puntos: 0
Ayudita con select

Hola máquinas!

A ver si me podeis hechar una mano con un select que no me acaba de salir.

Tengo una tabla que almacena el nombre del usuario, otra que almacena los idiomas que habla el usuario, y una tercera que almacena los deportes que practica

el usuario.

Lo que quiero es obtener el nombre del usuario que habla Español e Inglés, y que practique cualquier deporte.


La estructura de las tablas es la siguiente:
Datos t1:
id [1]
id_usuario [34]
nombre [Juan]

Datos t2:
id [1]
id_usuario [34]
idioma [p.e: ESpañol]
---------------------
id [2]
id_usuario [34]
idioma [Inglés]


Datos t3:
id [1]
id_usuario [34]
deporte [fútbol]
---------------------
id [2]
id_usuario [34]
deporte [basquet]
----------------------
id [3]
id_usuario [34]
deporte [hockey]


El select que tengo (y que no me devuelve ningún resultado) es el siguiente:
SELECT DISTINCTROW t1.nombre
FROM t1
INNER JOIN t2 ON t2.id_usuario=t1.id_usuario
INNER JOIN t3 ON t3.id_usuario=t1.id_usuario
WHERE ((t2.idioma='Español') OR (t2.id_idioma='Inglés'))
AND t3.deporte LIKE '%'
GROUP BY t1.id_usuario HAVING COUNT(t2.id)=2

Si pongo el siguiente funciona sin problemas:
SELECT DISTINCTROW t1.nombre
FROM t1
INNER JOIN t2 ON t2.id_usuario=t1.id_usuario
INNER JOIN t3 ON t3.id_usuario=t1.id_usuario
WHERE ((t2.idioma='Español') OR (t2.id_idioma='Inglés'))
AND t3.id_usuario=t1.id_usuario //AQUI ESTA EL CAMBIO
GROUP BY t1.id_usuario HAVING COUNT(t2.id)=2

Pero no me interesa hacerlo así, ya que en ocasiones la consulta se hará con algún deporte en concreto.


Gracias por vuestra ayuda!