Вам, вероятно, нужно 2 левых соединения, чтобы получить компанию и поставщика, поэтому
drop table if exists table1,table2,table3;
create table table1(ID int, Field1 varchar(3), Field2 varchar(3));
insert into table1 values
(1 , 'ABC' , 'XYZ');
create table Table2(IDFK int, CompanyVendor int, CompanySupplier int);
insert into table2 values
(1 , 3 , 2),
(1 , 3 , null),
(1 , null , 2),
(1 , 4 , 5),
(1 , 1 , 2)
;
create table Table3 (CompanyID int, name varchar(20));
insert into table3 values
(1 , 'Company A'),
(2 , 'Company B'),
(3 , 'Company C');
Этот запрос
select t1.*,t2.companyvendor,t3.name Vendorname,
t2.companysupplier,t4.name Suppliername
from table1 t1
join table2 t2 on t2.idfk = t1.id
left join table3 t3 on t3.CompanyID = t2.companyvendor
left join table3 t4 on t4.CompanyID = t2.companysupplier
;
Дает этот результат
+------+--------+--------+---------------+------------+-----------------+--------------+
| ID | Field1 | Field2 | companyvendor | Vendorname | companysupplier | Suppliername |
+------+--------+--------+---------------+------------+-----------------+--------------+
| 1 | ABC | XYZ | 1 | Company A | 2 | Company B |
| 1 | ABC | XYZ | 3 | Company C | 2 | Company B |
| 1 | ABC | XYZ | NULL | NULL | 2 | Company B |
| 1 | ABC | XYZ | 3 | Company C | NULL | NULL |
| 1 | ABC | XYZ | 4 | NULL | 5 | NULL |
+------+--------+--------+---------------+------------+-----------------+--------------+
5 rows in set (0.00 sec)
Кстати, никогда не используйте дефис (-) в качестве имени сущности и не используйте пробелы.