Hola Arsenal:
Si entendí correctamente, lo único que te falta es especifica en la consulta la empresa que estás consultando, tal como lo estás poniendo simplemente muestras los proveedores que no están asignados a ninguna empresa, para mostrar los proveedores que no están asignados a una empresa en específica sería más o menos así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.16 sec)
-> (2, 'proveedor 2'),(3, 'proveedor 3');
Query OK, 3 rows affected (0.03 sec)
+--------------+-------------+
| id_proveedor | nombre |
+--------------+-------------+
| 1 | proveedor 1 |
| 2 | proveedor 2 |
| 3 | proveedor 3 |
+--------------+-------------+
;
Query OK, 0 rows affected (0.09 sec)
Query OK, 1 row affected (0.03 sec)
+------+------------+--------------+
| id | id_empresa | id_proveedor |
+------+------------+--------------+
| 1 | 1 | 1 |
+------+------------+--------------+
mysql> #utilizando RIGHT JOIN para la empresa 1
mysql
> SELECT p.id_proveedor
,p.nombre
-> proveedores p
-> ON ep.id_proveedor
= p.id_proveedor
AND ep.id_empresa
= 1 +--------------+-------------+
| id_proveedor | nombre |
+--------------+-------------+
| 2 | proveedor 2 |
| 3 | proveedor 3 |
+--------------+-------------+
mysql> #utilizando RIGHT JOIN para la empresa 2
mysql
> SELECT p.id_proveedor
,p.nombre
-> proveedores p
-> ON ep.id_proveedor
= p.id_proveedor
AND ep.id_empresa
= 2 +--------------+-------------+
| id_proveedor | nombre |
+--------------+-------------+
| 1 | proveedor 1 |
| 2 | proveedor 2 |
| 3 | proveedor 3 |
+--------------+-------------+
Observa que lo único que hice fue agregar en el ON del JOIN la condición para filtrar sólo los registros para la empresa que estás consultando.
También podrías haberlo hecho utilizando NOT EXIST y NOT IN así:
Código MySQL:
Ver originalmysql> #Utilizando NOT EXISTS
-> WHERE ep.id_proveedor
= p.id_proveedor
AND ep.id_empresa
= 2); +--------------+-------------+
| id_proveedor | nombre |
+--------------+-------------+
| 1 | proveedor 1 |
| 2 | proveedor 2 |
| 3 | proveedor 3 |
+--------------+-------------+
mysql> #Utilizando NOT IN
-> FROM empresa_proveedor ep
WHERE ep.id_empresa
= 2); +--------------+-------------+
| id_proveedor | nombre |
+--------------+-------------+
| 1 | proveedor 1 |
| 2 | proveedor 2 |
| 3 | proveedor 3 |
+--------------+-------------+
Saludos y espero que esto sea lo que necesitas.
Leo