मुझे यकीन है कि यह पहले ही हल हो चुका है, लेकिन समान समस्या वाले लोगों के लिए।
आप सभी डेटा प्राप्त करने के लिए कई बाईं ओर जुड़ने की कोशिश कर सकते हैं
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)