2015-03-24 6 views
0

Я работаю над базой данных для нашего хранилища, я хочу, чтобы первая таблица хранила каждый отдельный элемент, чтобы я мог хранить определенные вещи, такие как MAC-адрес и т. Д. Я хочу, чтобы вторая таблица отслеживала элемент в целом, сохраняя общую сумму и стоимость входа/выхода этого элемента. Однако я не знаю, как настроить вторую базу данных.MySQL: сгенерируйте значения таблицы 2 через записи таблицы 1

Пример требуемой БД ниже

STORAGE 
id  | product | in | out 
_____________________________________ 
1  | ProductA | 50 | 75 
2  | ProductA | 50 | 75 
3  | ProductB | 100 | 150 
4  | ProductB | 100 | 150 
5  | ProductB | 100 | 150 

TOTAL 
product | total | total in | total out 
__________________________________________ 
ProductA | 2 | 100 | 150 
ProductB | 3 | 300 | 450 

Я не уверен, что я хочу, это даже возможно, любая помощь будет принята с благодарностью.

EDIT: Возможно, это также возможность иметь кнопку «Обновить» на моей странице управления через PHP, хотя я не уверен, как это работает.

ответ

0

Создайте представление для вашей «общей» таблицы.

CREATE VIEW storage_total AS 
SELECT product, COUNT(*) AS total, SUM(`in`) AS total_in, SUM(`out`) AS total_out 
FROM storage 
GROUP BY product; 

и вы в порядке. Отныне вы просто делаете

SELECT * FROM storage_total; 

, чтобы получить то, что вы хотите.

0

Вам не нужна эта вторая таблица, так как вы можете получить всю информацию из первой таблицы с соответствующими операторами sql. Сохранение этой информации избыточно было бы связано с множеством проблем, например, когда вы обновляете первую таблицу, вам также необходимо запомнить вторую таблицу. Если вы забыли, а информация в двух таблицах не одинакова - как вы знаете, какая информация является правильной и что неправильно?

Если вы действительно хотите, чтобы эта таблица в вашей базе данных смотрела на нее, я бы рекомендовал создать VIEW вместо TABLE, который просто отображает информацию, собранную из первой таблицы.

Это, безусловно, возможно реализовать, но я бы не рекомендовал его.

Чтобы создать оператор sql, который извлекает информацию для второй таблицы из первого, я бы рекомендовал посмотреть инструкцию GROUP BY.

Смежные вопросы