PHP и Mysql не могут получить имя таблицы с ОБЪЕДИНЕНИЕМ

#php #mysql #sql

#php #mysql #sql

Вопрос:

 if($result = mysql_query(
"SELECT `condition` FROM `table1` WHERE `id` = '1')
 UNION ALL
SELECT `condition` FROM `table2` WHERE `id` = '1')
 UNION ALL
SELECT `condition` FROM `table3` WHERE `id` = '1')"
){ 
      $num = mysql_num_rows($result);
      for($i = 0;  $i < $num; $i  ){     
        $table = mysql_field_table($result, $i);
        echo  $table.' cond: '.mysql_result($result, $i, 'condition').', ';
      }
}
  

Здесь я могу получить результаты запроса (условие), но я также хочу получить имена таблиц, чтобы узнать, к какой таблице принадлежит результат, я попробовал это: mysql_field_table($result, $ i), но он ничего не возвращает.
Поэтому, пожалуйста, помогите мне получить имя таблицы, заранее благодарю вас.

Комментарии:

1. Используйте что-то непосредственно в sql, например SELECT CONCAT(condition,'t1') FROM..UNION ALL SELECT CONCAT(condition,'t2') FROM...

Ответ №1:

У вас есть набор вычисляемых столбцов, поэтому нет исходной таблицы, которую вы могли бы отследить. Вам нужно добавить информацию самостоятельно:

 SELECT `condition`, 'table1' AS source
FROM `table1`
WHERE `id` = '1'

UNION ALL

SELECT `condition`, 'table2'
FROM `table2`
WHERE `id` = '1'

UNION ALL

SELECT `condition`, 'table3'
FROM `table3`
WHERE `id` = '1'
  

Ответ №2:

используйте это

   SELECT `condition`, '1' tablnumber FROM `table1` WHERE `id` = '1'
  UNION ALL
  SELECT `condition`,'2' FROM `table2` WHERE `id` = '1'
  UNION ALL
  SELECT `condition`,'3' FROM `table3` WHERE `id` = '1'
  

демонстрация здесь