Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: javirk en 5 Abril 2012, 12:22 pm



Título: No me sale INNER JOIN con condición
Publicado por: javirk en 5 Abril 2012, 12:22 pm
Hola, tengo dos tablas una se llama "users_pelis", y la otra "users", en la tabla "users" se encuentran los datos de los usuario, con su id_usuario; y en la tabla users_pelis, se relaciona cada id_usuario con un id de otra cosa, bueno, pues a mí me gustaría sacar todos los ids de la otra cosa que pertenecieran a un mismo usuario, y he hecho un INNER JOIN:
Código
  1. SELECT users_pelis.id_peli FROM users_pelis INNER JOIN users ON users_pelis.id_usuario = users.id_usuario

Pero eso me saca todos los ids que están relacionados en la otra tabla, sin importar con quién, como es lógico. Entonces he decidido hacer:
Código
  1. SELECT users_pelis.id_peli FROM users_pelis INNER JOIN users ON users_pelis.id_usuario = users.id_usuario WHERE users.id_usuario = "miemail"

donde "miemail" es el email que tengo que poner, que por razones varias no voy a poner. Pero con esto me da un error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@hotmail.com LIMIT 0, 30' at line 1

Y ahí me he quedado, sin saber qué hacer.

Un saludo y gracias de antemano!


Título: Re: No me sale INNER JOIN con condición
Publicado por: Runex en 5 Abril 2012, 12:49 pm
Hola, tengo dos tablas una se llama "users_pelis", y la otra "users", en la tabla "users" se encuentran los datos de los usuario, con su id_usuario; y en la tabla users_pelis, se relaciona cada id_usuario con un id de otra cosa, bueno, pues a mí me gustaría sacar todos los ids de la otra cosa que pertenecieran a un mismo usuario, y he hecho un INNER JOIN:
Código
  1. SELECT users_pelis.id_peli FROM users_pelis INNER JOIN users ON users_pelis.id_usuario = users.id_usuario

Pero eso me saca todos los ids que están relacionados en la otra tabla, sin importar con quién, como es lógico. Entonces he decidido hacer:
Código
  1. SELECT users_pelis.id_peli FROM users_pelis INNER JOIN users ON users_pelis.id_usuario = users.id_usuario WHERE users.id_usuario = "miemail"

donde "miemail" es el email que tengo que poner, que por razones varias no voy a poner. Pero con esto me da un error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@hotmail.com LIMIT 0, 30' at line 1

Y ahí me he quedado, sin saber qué hacer.

Un saludo y gracias de antemano!

Revisando la consulta, me fijo en 2 errores.

1-> Si quieres conseguir el id del usuario donde el email coincide con el tuyo, esta parte de la consulta estaría mal:

Código
  1. WHERE users.id_usuario = "miemail"

users.id_usuario supongo que será una variable integer primary key auto_increment, por tanto no admite variables char. Tendrías que cambiar users.id_usuario por el campo donde almacenes los emails, que podría ser: users.email = "miemail".

2-> Ninguna consulta que has puesto está cerrada es decir, no finalizas con ';'.

Quedaría así:

Código
  1. SELECT users_pelis.id_peli FROM users_pelis INNER JOIN users ON users_pelis.id_usuario = users.id_usuario WHERE users.email = "miemail";

Eso es todo :).

Un saludo y espero haber sido de ayuda :)


Título: Re: No me sale INNER JOIN con condición
Publicado por: javirk en 5 Abril 2012, 16:21 pm
Ala! El problema era el primero, lo segundo es que simplemente se me olvidó escribirlo, gracias!


Título: Re: No me sale INNER JOIN con condición
Publicado por: Runex en 5 Abril 2012, 20:49 pm
De nada javirk para eso estamos en el foro :).

Si necesitas cualquier cosa aquí estamos :)