SELECT SUM(t.P01) AS total_P01, SUM(t.P02) AS total_P02
FROM (SELECT P01, P02 FROM graduate_survey
UNION ALL
SELECT P01, P02 FROM Alumni_survey) t
Это работает. На основе: Как я могу суммировать столбцы по нескольким таблицам в MySQL? Я не помечаю его как дубликат, потому что ресурс предназначен для одного значения, а здесь два.
Добавление результатов типа DECIMAL(10,6) из 2 реальных таблиц с 18 000 + 57 000 записей, выполнение запроса занимает около 0,15 с.
Часть 2: ВСТАВИТЬ
Предполагая, что ваша новая таблица имеет AUTO INCREMENT на T_id (pk), и вы получили предыдущий результат с mysql_fetch_assoc()
в $row:
$query_string = "INSERT INTO Total_survey
SET P01 = '".floatval($row['total_P01'])."',
P02 = '".floatval($row['total_P02'])."' ";
- или intval(), если ваши результаты являются целыми числами.
Изменить: для 3 таблиц:
SELECT SUM(t.P01) AS total_P01, SUM(t.P02) AS total_P02
FROM (SELECT P01, P02 FROM graduate_survey
UNION ALL
SELECT P01, P02 FROM Alumni_survey
UNION ALL
SELECT P01, P02 FROM faculty_survey) t
Но я не думаю, что это хорошая идея. У вас есть таблицы с одинаковой структурой, содержащие похожие данные. Лучшим подходом было бы сделать еще 1 столбец в одной таблице и написать для каждой записи, это для выпускников, выпускников или факультетов. Наличие 3 отдельных таблиц для этой работы просто делает вашу структуру базы данных трудной для понимания и использования. Вы можете сделать эти две таблицы:
Survey: id(pk), group_id(int), PO1, PO2
и таблица описания:
Groups: group_id(pk), group_name(varchar)
Таким образом, вы можете иметь неограниченное количество опросных групп, вы можете динамически расширять их количество из вашей программы и намного проще обрабатывать их данные.
person
Todor Simeonov
schedule
20.05.2017