
29/10/2008, 04:05
|
| | Fecha de Ingreso: septiembre-2008
Mensajes: 37
Antigüedad: 16 años, 5 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! |