La sintaxis
para la clausula Natural JOIN USING es la siguiente:
SELECT tabla1.column,
tabla2.colum
FROM tabla1
JOIN tabla2
USING (join_column1, join_column2…);
Mientras que el Natural Join Puro contiene la palabra NATURAL en su
sintaxis, el JOIN … USING no lo hace. Un error es levantado si la palabra
NATURAL y USING aparecen en la misma clausula JOIN. La clausula JOIN … USING
permite uno o más columnas equijoins especificar explícitamente encerradas
entre paréntesis depues de la palabra USING. Esto evita los defectos con el
Natural Join Puro. Muchas situaciones demandan
que las tablas sean unidas solo con ciertas columnas. Este formato
cumple con cierto requerimiento. Considere las siguientes consultas:
-- Consulta 1
SELECT l.location_id, l.street_address, l.postal_code, l.city,
l.state_province, country_id, c.country_name, c.region_id
FROM locations l
JOIN countries c USING (country_id);
SELECT *
FROM locations l
JOIN countries c USING (country_id);
La Consulta 1 especifica que la tabla LOCATIONS y COUNTRIES deben ser
unidad mediante la columna COUNTRY_ID. Todas las columnas de estas tablas son
recuperadas para las columnas que son columnas Join aparecen solo una vez. La notación
dot no puede ser utilizada para columnas join deben ser nombradas solo por su
nombre.
-- Consulta 2
SELECT l.location_id, l.street_address, l.postal_code, l.city,
l.state_province, l.country_id, c.country_id, c.country_name, c.region_id
FROM locations l, countries c
WHERE l.country_id = c.country_id;
La consulta 2 muestra la consulta anterior pero con la sintaxis
tradicional.
-- Consulta 3
SELECT * FROM jobs j JOIN countries c USING;
La consulta 3 ilustra que un producto cartesiano no puede ser occidentalmente
especificado con JOIN … USING ya que después de la palabra USING deben ser
especificadas las columnas join.
Las columnas Join no pueden ser cualificadas utilizando el nombre de
la tabla o el alias cuando son referenciadas mediantes estos. Desde que este
tipo de unión excluye algunas columnas con nombres idénticos estas deben ser
referenciadas.
SELECT employee_id, employee_id, e.job_id, e.department_id, jh.job_id,
jh.department_id
FROM employees e
JOIN job_history jh USING(employee_id);
Comentarios
Publicar un comentario