coge la información y corre

INNER JOIN para unir Tablas

15 de Marzo del 2006 Escrito por Alex Barros

Ver también: Explicación visual de los SQL Join
Ver también: Hacer Múltiples Join en una sola Sentencia

Muy bien, aprendices del Sql, hoy hablaremos de la instrucción INNER JOIN. Muy útil para casos concretos.

Primero de todo vamos a crear una situación hipotética:

Imaginemos que tenemos que hacer una web que contiene unos artículos en referencia a comentarios de novelas, y que son doce escritores de prestigio los que van introduciendo esas críticas.

Lo normal y más básico para un programador sería pensar en base de datos y lenguaje dinámico. Una buena elección podría ser trabajar con PHP y MySql (aunque para lo que voy a decir basta con una base de datos de tipo Sql).

Lo primero que nos viene a la mente es: haré una tabla, llamémosla criticas. En ella almacenaríamos cada artículo. Los campos básicos serían ID, Libro, Escritor (del libro, nunca confundir con el autor de la crítica), Editorial, año … y Autor de la crítica.

Pero y si quisiéramos, como es normal, poner en la misma crítica una referencia al autor de la critica, aúnque sólo sea un pequeño texto biográfico? Tendríamos que repetir un mismo texto repetidas veces en la base (la biografia de doce autores en, pongamos 150 registros) y si quisieramos modificarlo y hubiera 70 entradas con ese autor… eso sería un desastre.

http://modulos.zumbe.net/imagenes/inner_join_criticas.gif

Entonces queda claro que hay que hacer una referencia a otra tabla que contenga a los autores, con sus respectivos datos. La tabla autores. Cada autor tendría su ID, su nombre y su biografía, además de otros datos como webpage, e-mail, bibliografía…

Algunos dirían: pues fácil, haces dos querys a la base. en uno le dices

  1. SELECT * FROM criticas WHERE ID =‘37′

y en otra

  1. SELECT * FROM autores WHERE

where qué? tendrías que sacar una variable de sql a php, otra vez a sql…
Nada! Si alguien sugiere eso desconfiad de él y de su familia (es broma ;D) existe un método sencillo y eficaz: el INNER JOIN

Tan sencilla es la sentencia como:

  1. SELECT * FROM criticas INNER JOIN autores ON criticas.autor = autores.id WHERE criticas.id=‘7′

De esta forma estamos uniendo las dos tablas, cada vez que en criticas el autor sea n, en autores se unirá su correspondiente fila, con id=n.

Traduciendo al español la sentencia dice exactamente:

SELECCIONA TODOS LOS CAMPOS UNIENDO criticas CON autores DONDE el campo autor de la tabla criticas SEA IGUAL A el campo id de la tabla autores EN EL REGISTRO EN QUE el id de criticas sea 7

En definitiva, el inner join une dos tablas, donde encajan un campo de una con el mismo de la otra.

A partir de ahora las tablas se hacen más manejables y flexibles.

Y recordad!:

  • Para seleccionar campos de cada tabla : tabla.campo universal en sql, dato importante.
  • Estructura del inner join: SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
  • Antes de hacer barbaridades con vuestras bases de datos documentaos un poco, lo digo por experiencia ;)

Categorias: Código, HOWTO/CóMO, MySQL | 17 comentarios »

del.icio.us meneame.net RSS

Buscar:

Bicivalencia Localiza las estaciones de Valenbisi, servicio público de bicicletas en Valencia, España. Ver más Gpsia Descubre y comparte rutas por todo el mundo, tomadas con GPS. Ver más Imaset Edita tus imágenes de Wordpress con este sencillo plugin. Ver más

¡Mi música es tuya!

Digo yo que...

Mis fotos de Flickr

Entradas Recientes

Meta:

Respeta el copyleft

,