que no utilizan la sintaxis USO, ya
- mayor parte de mi combinaciones que no se adaptan a ella (no es el mismo nombre de campo que se está igualada, y/o varias coincidencias en la unión) y
- no es inmediatamente evidente lo que se traduce en el caso de más de dos tablas
es decir, suponiendo 3 mesas con 'id' y 'columnas' ID_2, hace
T1 JOIN T2 USING(id) JOIN T3 USING(id_2)
convierten
T1 JOIN T2 ON(T1.id=T2.id) JOIN T3 ON(T1.id_2=T3.id_2 AND T2.id_2=T3.id_2)
o
T1 JOIN T2 ON(T1.id=T2.id) JOIN T3 ON(T2.id_2=T3.id_2)
o alguna otra cosa de nuevo?
Encontrar esto para una versión de base de datos en particular es un ejercicio bastante trivial, pero no tengo una gran cantidad de confianza de que sea consistente en todas las bases de datos, y no soy la única persona que tiene que mantener mi código (para que las demás personas también tengan que saber a qué equivale).
Una diferencia obvia con el DONDE vs ON es si la unión es exterior:
Suponiendo un T1 con un campo de ID único, una fila que contiene el valor 1, y una T2 con un ID y el campo de valor (uno fila, ID = 1, VALUE = 6), entonces se obtiene:
SELECT T1.ID, T2.ID, T2.VALUE FROM T1 LEFT OUTER JOIN T2 ON(T1.ID=T2.ID) WHERE T2.VALUE=42
da ninguna fila, ya que se requiere la DONDE a la altura, mientras que
SELECT T1.ID, T2.ID, T2.VALUE FROM T1 LEFT OUTER JOIN T2 ON(T1.ID=T2.ID AND T2.VALUE=42)
dará una fila con los valores
1, NULL, NULL
ya que el ENCENDIDO solo es necesario para hacer coincidir la unión, que es opcional por ser exterior.
¿Por qué interés qué base de datos estás utilizando? Acabo de probar la sintaxis de USING en SQL Server y parece que no funciona. –
Estoy usando MySQL – Pyrolistical