Aqui tienes una "receta" de MySQL CookBook que puedes aplicar a FB
Tenemos dos tablas: artistas y pinturas.
Determinemos que qu artistas no se encuentran en la tabla pinturas. En este ejemplo las tablas son pequeñas asi que es facil determinar eso visualmente, podemos ver que no hay pinturas de Monet y Picaso (no hay registros en pinturas con un valor de a_id de 2 o 4)
Código SQL
[-]mysql> SELECT * FROM artist ORDER BY a_id;
Código:
+------+----------+
| a_id | name |
+------+----------+
| 1 | Da Vinci |
| 2 | Monet |
| 3 | Van Gogh |
| 4 | Picasso |
| 5 | Renoir |
+------+----------+
Código SQL
[-]SELECT * FROM painting ORDER BY a_id, p_id;
Código:
+------+------+-------------------+-------+-------+
| a_id | p_id | title | state | price |
+------+------+-------------------+-------+-------+
| 1 | 1 | The Last Supper | IN | 34 |
| 1 | 2 | The Mona Lisa | MI | 87 |
| 3 | 3 | Starry Night | KY | 48 |
| 3 | 4 | The Potato Eaters | KY | 67 |
| 3 | 5 | The Rocks | IA | 33 |
| 5 | 6 | Les Deux Soeurs | NE | 64 |
+------+------+-------------------+-------+-------+
Haciendo un left join asi
Supongamos que hacemos
Código SQL
[-]SELECT * FROM artist LEFT JOIN painting
ON artist.a_id = painting.a_id;
Ejemplo:
Obtenemos una tabla de pinturas con sus artistas
Código:
+------+----------+------+------+-------------------+-------+-------+
| a_id | name | a_id | p_id | title | state | price |
+------+----------+------+------+-------------------+-------+-------+
| 1 | Da Vinci | 1 | 1 | The Last Supper | IN | 34 |
| 1 | Da Vinci | 1 | 2 | The Mona Lisa | MI | 87 |
| 2 | Monet | NULL | NULL | NULL | NULL | NULL |
| 3 | Van Gogh | 3 | 3 | Starry Night | KY | 48 |
| 3 | Van Gogh | 3 | 4 | The Potato Eaters | KY | 67 |
| 3 | Van Gogh | 3 | 5 | The Rocks | IA | 33 |
| 4 | Picasso | NULL | NULL | NULL | NULL | NULL |
| 5 | Renoir | 5 | 6 | Les Deux Soeurs | NE | 64 |
+------+----------+------+------+-------------------+-------+-------+
La tabla es similar a la que se obtiene con un join normal, solo que en este caso tambien produce una fila para cada artista que no tiene pinturas que correspondan en la tabla "pinturas". Por ello las columnas correspondientes a la tabla "pinturas" aparecen con nulos.
Ahora restringimos solo las columnas que no se encontraron y agregamos un
WHERE que busque solo los valores Nulos para la columna "pintura"
Código SQL
[-]SELECT * FROM artist LEFT JOIN painting
ON artist.a_id = painting.a_id
WHERE painting.a_id IS NULL;
Código:
+------+---------+------+------+-------+-------+
| a_id | name | a_id | p_id | title | price |
+------+---------+------+------+-------+-------+
| 2 | Monet | NULL | NULL | NULL | NULL |
| 4 | Picasso | NULL | NULL | NULL | NULL |
+------+---------+------+------+-------+-------+
Finalmente para mosotrar solo los valores de la tabla artistas que no estan en la tabla pinturas, ordenamos las columnas para incluir solo las columnras de la tabla artistas
Código SQL
[-]mysql> SELECT artist.* FROM artist LEFT JOIN painting
-> ON artist.a_id = painting.a_id
-> WHERE painting.a_id IS NULL;
Código:
+------+---------+
| a_id | name |
+------+---------+
| 2 | Monet |
| 4 | Picasso |
+------+---------+
Lo mismo se aplica para el ejemplo que quieres hacer, saber que registros no se encuentran en otra tabla. Solo sigue l ejemplo, razónalo y veras que es sencillo