Haga clic en la pestaña 'SQL'.
Sobrescriba la consulta con esta. Puede mantenerlo todo en una sola línea, pero extenderlo hace que sea más fácil de leer.
SELECT *
FROM heroes
LEFT JOIN appearances ON heroes.character_name=appearances.character_name
Los resultados ahora muestran toda la información que teníamos en nuestra tabla más reciente.
La ventaja aquí es que solo necesitamos actualizar una línea en nuestra tabla de héroes para cada héroe, por lo que hay mucho menos riesgo de error y ocupamos menos espacio de almacenamiento. También es más rápido de procesar, pero eso probablemente no se note para una base de datos tan pequeña.
Desglosemos la consulta.
SELECT *
es el mismo que antes. Dice mostrar todos los campos. En este caso, muestre todos los campos de todas las tablas incluidas en la consulta.
FROM heroes
es lo mismo que antes, aunque he omitido los acentos graves. Los acentos graves no son necesarios en la mayoría de los casos.
La última línea es nueva. LEFT JOIN
significa que estamos conectando todas las filas de la segunda tabla que coinciden con la primera tabla, y estamos usando el campo 'character_name' de ambas tablas para identificar la coincidencia (heroes.character_name=appearances.character_name
).
Observe que identificamos los campos a usar nombrando primero la base de datos y separándolos por un .
. Esto asegura que la base de datos no se confunda porque los nombres de los campos son los mismos en ambas tablas.
Observe también que Scarlet Witch aparece en los resultados porque está en la primera tabla, aunque no aparece en la segunda tabla. La información que falta aparece como NULL
. Veamos qué pasa si cambiamos las mesas.
Podríamos intercambiar los nombres de las tablas en la consulta FROM appearances LEFT JOIN heroes ON heroes.character_name=appearances.character_name
, pero también podemos simplemente cambiar el tipo de unión de LEFT
a RIGHT
.
SELECT *
FROM heroes
RIGHT JOIN appearances ON heroes.character_name=appearances.character_name
Cuando ejecuta esta consulta, Scarlet Witch desaparece porque la segunda tabla (apariencias) es nuestra base y ella no aparece en esa tabla.
Volvamos a la consulta original para que podamos ver a Scarlet Witch.
SELECT *
FROM heroes
LEFT JOIN appearances ON heroes.character_name=appearances.character_name
Antes de continuar, observe que tenemos información innecesaria en nuestros resultados. La base de datos requiere 'id', pero por ahora no tiene ningún valor para nosotros. Tampoco tiene ningún valor repetir los datos de 'character_name'.
Tomemos solo los campos que realmente necesitamos.
SELECT character_name, hero_villain, first_appeared, power, movie
FROM heroes
LEFT JOIN appearances ON heroes.character_name=appearances.character_name
Observe que hemos reemplazado * con la lista de campos específicos que queremos incluir.
Desafortunadamente, cuando ejecuta la consulta, verá un error que dice que la columna 'character_name' es ambigua. Aunque son exactamente iguales en ambas tablas, la base de datos necesita saber cuál elegir.
SELECT heroes.character_name, hero_villain, first_appeared, power, movie
FROM heroes
LEFT JOIN appearances ON heroes.character_name=appearances.character_name
Siguiente: Conexiones de Base de Datos PHP