if(!isset($Keywords)) $Keywords = "PHP,Programación,recursos gratis,MYSQL,tips,trucos,diccionario informático,Términos técnicos,Galería de imágenes,Visual Basic,Microsoft,Linux,Apache,IIS,Foro,Manuales" ?> if(!isset($Description)) $Description = "Recursos gratuitos para programadores y estudiantes de informática" ?> if(!isset($TITLE)) $TITLE = "Programación, Manuales, Consejos, Trucos (PHP, HTML, CSS, Visual Basic, ASP, MySQL)" ?>
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Como funcionan los JOINS en MYSQLLa instrucción JOIN en SQL sirve para unir dos tablas en base a un criterio, el cual generalmente es un campo llave. Primera parte: Utilizando el INNER JOINPor ejemplo, teniendo las siguientes dos tablas:
Tenemos que la tabla ventas tiene un campo llamado IDCLIENTE el cual corresponde con el campo ID de la tabla usuarios. La consulta quedarÃa asÃ:
La ejecutamos y nos devuelve la siguiente tabla:
La cual corresponde a la unión de las dos tablas. Nótese que NO aparecieron aquellos registros que NO tenÃÂan una correspondencia, o sea que no apareció el usuario CARLOS que no tenÃa ninguna venta ni las ventas cuyo IDCLIENTE era 999. Entonces, de una tabla de 4 elementos, relacionada con otra tabla de 5 elementos, nos quedó una tabla de 3, los cuales corresponden a la intesección de ambas. Segunda parte: Utilizando LEFT JOIN y RIGHT JOINExisten otras dos formas del JOIN que sirven también para relacionar dos tablas, se trata de "LEFT JOIN" y "RIGHT JOIN". La diferencia con el INNER es que con estas podemos indicarle que una de las tablas tiene una JerarquÃa mayor que la otra. En el caso de LEFT JOIN la tabla de la izquierda la consideramos como Relevante y por tanto queremos que simpre aparezcan los elementos de esta, independientemente de que tengan un equivalente en la tabla mensionada del lado derecho del JOIN. Para terminar de comprenderlo, veamos un ejemplo:
Utilizamos exactamente la misma sentencia pero en lugar de INNER JOIN ponemos LEFT JOIN. El resultado será el siguiente conjunto de registros o recordset:
El resultado fue una tabla de 5 renglones, esto quiere decir que la tabla de la izquierda o "Tabla Left" se desplegó en su totalidad y aquellos registros de la tabla secundaria que pudieron relacionarse se incluyeron y aquellos que no tuvieron relación aparecen como valores NULOS. NOTA: Pera cuestiones de una mejor comprensión del resultado esperado de la consulta anterior, podemos interpretarlo en lenguaje natural como: Listado de todos los artÃculos vendidos incluyendo, si se tiene, la información del comprador .
En este momento el lector ya debe imaginarse la función del operador RIGHT JOIN, el cual obviamente tiene la función complementaria al LEFT JOIN. Con el RIGHT JOIN es la tabla mencionada del lado derecho la que tiene la JerarquÃa y por lo tanto será la de la derecha la que aparecerá completa. Probemos con la misma consulta, pero utilizando RIGHT esta véz:
Y el resultado es:
NOTA: Igualmente podemos realizar nuestra interpretación de la consulta de la siguiente manera: Listado de todos los clientes incluyendo, si se tiene, la información de su compra.
Lo cual es válido aún cuando serÃa más apropiado presentar la información con los valores nulos del lado derecho. Tercera parte: Otras consideraciones
|
Nadie ha puesto ningún comentario todavía |