Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: javirk en 12 Febrero 2012, 14:40 pm



Título: ¿Join entre tres tablas?
Publicado por: javirk en 12 Febrero 2012, 14:40 pm
Hola, estoy haciendo una base de datos que tiene tres tablas:
  • Usuarios
  • Pelis
  • Usuario_peli

En la tabla Usuarios tengo los datos de los usuarios, en la de pelis, los datos de las películas, y en la de Usuario_peli, el Id_usuario de un usuario, y el id_peli, de la tabla de películas. Lo he puesto en una tabla a parte por ser una relación varios a varios. He hecho una consulta con un WHERE:
Código
  1. SELECT * FROM usuario_peli a, pelis b, usuarios c WHERE a.id_usuario = c.id_usuario AND a.id_peli = b.id_peli

Mi pregunta es, ¿cómo se podría hacer esto con un JOIN?

Un saludo.


Título: Re: ¿Join entre tres tablas?
Publicado por: ‭lipman en 12 Febrero 2012, 15:01 pm
Para hacer un Join necesitas que haya un campo en común (aunque no se llame necesariamente igual). En caso de no haberlo, se hace un producto cartesiano (todos x todos) lo cual si la tabla es grande, puede consumir bastante recursos.

Hacer un JOIN entre 3 tablas es igual que entre 2.

Código
  1. SELECT * FROM (TABLA1 NATURAL JOIN TABLA2) NATURAL JOIN TABLA3

En función de si el campo se llama igual, usas el NATURAL JOIN, o usas el JOIN ON, o JOIN USING. Te recomiendo que busques acerca de ellos.

Un saludo!