我有一个名为PRODOTTO的mysql表以这种方式构建
+----+-----------+-------------+----------+--------+
| id | categoria | prodotto | quantita | prezzo |
+----+-----------+-------------+----------+--------+
| 1 | bar | Maxibon | 887 | 2.00 |
| 2 | bar | Limonata | 21 | 1.50 |
| 3 | bar | Coca Cola | 70 | 1.50 |
| 4 | bar | chupa chups | 30 | 0.60 |
| 5 | bar | pirulo | 79 | 1.00 |
+----+-----------+-------------+----------+--------+
另一个名为CONSUMAZIONI
+----+----------+----------+--------+-----------------+--------+
| id | prodotto | quantita | prezzo | totale_parziale | status |
+----+----------+----------+--------+-----------------+--------+
| 1 | Maxibon | 1 | 2.00 | 2.00 | open |
| 2 | pirulo | 6 | 1.00 | 6.00 | open |
+----+----------+----------+--------+-----------------+--------+
我想将它合并到表中并获得一个像这样的唯一表
+----+----------+----------+----------------------+--------+----------------+--------+
| id | prodotto | quantita | quantita_disponibile | prezzo | totale_parziale | status |
+----+----------+----------+----------------------+--------+-----------------+--------+
| 1 | Maxibon | 1 | 887 | 2.00 | 2.00 | open |
| 2 | pirulo | 6 | 79 | 1.00 | 6.00 | open |
+----+----------+----------+----------------------+--------+-----------------+--------+
所以新表是CONSUMAZIONI表和prodotto表的“quantita”列的组合。 在这个新表上,我将进行这样的查询
SELECT * FROM...
答案 0 :(得分:1)
试试这个:
CREATE TABLE Fusione AS
(SELECT p.id,p.prodotto,c.quantita,p.quantita AS quantita_disponibile,p.prezzo,c.totale_parziale,c.status
FROM Prodotto P, Consumazione c
WHERE p.id=c.id
)
还要考虑恢复架构,因为两个表中都有冗余。事实上,表Consumazioni应该是表Prodotto的关系。所以Consumazioni应该像:
id_prodotto | quantità|状态
通过加入两个表并对数据执行一些基本的数学运算(例如,totale_parziale是prezzo * quatita),可以获得其他信息。
答案 1 :(得分:0)
你可以在PHP中做什么,或者更确切地说在MySQL中做的是创建一个视图;所以你不必总是加入。
您可以为这些表创建视图,如下所示:
CREATE VIEW prodConsumption AS
SELECT
p.prodotto, c.quantita, p.quantita AS quantita_disponibile, p.prezzo, c.totale_parziale, c.status
FROM
PRODOTTO p
INNER JOIN
CONSUMAZIONI c ON p.prodotto=c.prodotto
当然,你应该查看你的表,按名称加入是可怕的,你的ID似乎不匹配。
之后,你可以按照自己的意愿去做:
SELECT * FROM prodConsumption
答案 2 :(得分:0)
您可以为此创建VIEW
:
CREATE VIEW view_prodotto_consumazinoni AS
SELECT
c.id AS id,
c.prodotto AS prodotto,
c.quantita AS quantita,
p.quantita AS quantita_disponibile,
c.prezzo AS prezzo,
c.totale_parziale AS totale_parziale,
c.status AS `status`
FROM consumazinoni c INNER JOIN prodotto p ON c.prodotto=p.prodotto;
这准确地说明了你想要的输出:
SELECT * FROM view_prodotto_consumazinoni;
id prodotto quantita quantita_disponibile prezzo totale_parziale status
1 Maxibon 1 887 2 2 open
2 pirulo 6 79 1 6 open
这样的VIEW
的优点是你可以定义一次,然后像普通的表一样使用它,而不必一直考虑JOIN
。它与两个基表中的更改数据同步,因此始终保持最新。
我为你设置了一个sql fiddler,这样你就可以玩了一下:
http://sqlfiddle.com/#!9/76a43/1
玩得开心!