使用php在一个表中合并mysql表

时间:2015-11-10 10:32:02

标签: php mysql

我有一个名为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...

3 个答案:

答案 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

玩得开心!