Если я понимаю, вы хотите получить один или другой запрос с разными определениями таблиц за один вызов, если что-то равно null?я думаю, что это не очень хорошая практика ...
Используя MysqlI и хранимую процедуру, вы можете прочитать последний выполненный выбор, но это странно:
DELIMITER //
CREATE PROCEDURE make_weird_query() BEGIN
IF something is null THEN
SELECT * FROM `locations`;
ELSE
SELECT * FROM `companies`;
ENDIF;
END;//
В PHP:
$query = $mysql->query("CALL make_weird_query()");
while($row = $query->fetch_assoc()){
// ...
}