#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'