Consultas de varias tablas

1) Anteponer al campo el nombre de la tabla

    SELECT paises.pais, continentes.continente
    FROM paises INNER JOIN continentes 
      ON paises.continente_id = continentes.id

2) Si el campo no es ambiguo no es necesario anteponer el nombre de la tabla

    SELECT pais, continente
    FROM paises INNER JOIN continentes 
      ON continente_id = continentes.id  

3) A las tabla se les puede poner alias

    SELECT p.pais, c.continente
    FROM paises p INNER JOIN continentes c
      ON p.continente_id = c.id  

4) Si el campo no es ambiguo no es necesario poner el alias

    SELECT pais, continente
    FROM paises INNER JOIN continentes c
      ON continente_id = c.id   

Sintaxis

SELECT campos de varias tablas
FROM tabla1 
  INNER JOIN tabla2 ON tabla1.id = tabla2.clave_id
  INNER JOIN tabla3 ON tabla1.id = tabla3.clave_id
  ...

Ejercicio 1

Muestra el nombre del país y su gobierno

Solución:

    SELECT pais, gobierno
    FROM paises p 
      INNER JOIN gobiernos g ON p.gobierno_id = g.id

Ejercicio 2

Muestra el nombre del país, su gobierno y el continente al que pertenece.

Solución:

    SELECT pais, gobierno, continente
    FROM paises p 
      INNER JOIN gobiernos g ON p.gobierno_id = g.id
      INNER JOIN continentes c ON p.continente_id = c.id

Ejercicio 3

¿En qué países se habla francés o portugués?

Solución:

    SELECT pais, idioma
    FROM paises p
      INNER JOIN pais_idiomas pi ON p.id = pi.pais_id
      INNER JOIN idiomas i ON i.id = pi.idioma_id
    WHERE idioma IN ('francés', 'portugués')
    ORDER BY 1, 2

Ejercicio 4

Países vecinos a Alemania

Solución:

    SELECT p.pais, v.pais AS vecino
    FROM paises p
      INNER JOIN pais_vecinos pv ON p.id = pv.pais_id
      INNER JOIN paises v ON v.id = pv.vecino_id
    WHERE p.pais = 'Alemania'
    ORDER BY 2

Proinf.net