【问题标题】:merge mysql table in one table using php使用php将mysql表合并到一个表中
【发布时间】:2015-11-10 10:32:01
【问题描述】:

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

【问题讨论】:

  • 你可以做一个视图...
  • 这个答案会帮助你...Stackoverflow

标签: php mysql


【解决方案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 |数量 |状态

通过连接两个表并对数据执行一些基本的数学运算(例如,totale_parziale 是 prezzo*quatita),可以获得其他信息。

【讨论】:

    【解决方案2】:

    您可以在 PHP,或者更确切地说,在 MySQL 中做的是创建一个视图;因此您不必总是进行 JOIN。

    您可以为这些表创建一个视图,如下所示:

    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
    

    【讨论】:

      【解决方案3】:

      您可以为此创建一个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

      玩得开心!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 2020-01-23
        • 2011-10-01
        • 1970-01-01
        相关资源
        最近更新 更多