Tôi chắc chắn rằng điều này đã được giải quyết, nhưng đối với những người gặp sự cố tương tự.
Bạn cũng có thể thử nhiều phép nối bên trái để lấy tất cả dữ liệu
SELECT *, IF (users.type = 1, p.name, c.name) AS name FROM users
LEFT JOIN private AS p ON (users.type = 1 AND users.id = p.user_id)
LEFT JOIN company AS c ON (users.type != 1 AND users.id = c.user_id)