比较两个表,从表中获取值并将其相乘 - PHP MySQL

时间:2013-12-26 03:48:58

标签: php mysql

我是新手,需要有关PHP MySQL的帮助。

我有两张桌子:

表1:

  

主页|   工作|体育|购买   YES |购买没有 _ __ _ __ _ __ _ __ _ < / EM> __ _ __ _ __
  电视|笔记本|   鞋| |
  DVD |桌|球| |

     
     

表2:

     

产品|   购买|   预算
_ __ _ __ _ __ _ __ _ __ _ __ _ __
  电视| YES | 500
电视|   NO | 5
  笔记本| YES |   400
笔记本电脑|   NO | 3
  鞋|   YES | 80个
  鞋|   NO | 1
  DVD |   YES | 60个
  DVD |   NO | 2
  台|   YES | 700个
  台|   NO | 1
  球|   YES | 20个
  球|   NO | 1个

如何从“Table2”获取值并将每个值相乘并将其存储在“Table1”的下一列中?

例如:

  

购买YES =电视*笔记本电脑*鞋子           = 500 * 400 * 80

     

购买NO =电视*笔记本电脑*鞋子          = 5 * 3 * 1

也可以到下一行。我希望你明白我的意思。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的数据库架构是一场噩梦,但您可以这样做

UPDATE table1 t LEFT JOIN table2 h_yes
    ON t.home = h_yes.items 
   AND h_yes.buy = 'YES' LEFT JOIN table2 h_no
    ON t.home = h_no.items 
   AND h_no.buy = 'NO' LEFT JOIN table2 w_yes
    ON t.work = w_yes.items 
   AND w_yes.buy = 'YES' LEFT JOIN table2 w_no
    ON t.work = w_no.items 
   AND w_no.buy = 'NO' LEFT JOIN table2 s_yes
    ON t.sport = s_yes.items 
   AND s_yes.buy = 'YES' LEFT JOIN table2 s_no
    ON t.sport = s_no.items 
   AND s_no.buy = 'NO'
   SET t.buy_yes = COALESCE(h_yes.budget, 1) 
                 * COALESCE(w_yes.budget, 1) 
                 * COALESCE(s_yes.budget, 1),
       t.buy_no = COALESCE(h_no.budget, 1) 
                 * COALESCE(w_no.budget, 1) 
                 * COALESCE(s_no.budget, 1);

结果:

|       HOME |   WORK | SPORT |  BUY_YES | BUY_NO |
|------------|--------|-------|----------|--------|
| Television | Laptop | shoes | 16000000 |     15 |
|        DVD |   desk |  ball |   840000 |      2 |

这是 SQLFiddle 演示

答案 1 :(得分:0)

值得修改你的表格。我不确定它们是否适合作为表1中的一行(根据我的理解)并不代表单个项目/实例。

无论如何,你会想看看这里找到的Mysqli for PHP:PHP Manual - Mysqli 1

Mysqli将允许您从MySQL数据库中检索数据,并从那里,您可以使用PHP来执行所需的操作。

理论上,您将希望使用Mysqli使用给定的SQL查询返回数据集。然后使用PHP,遍历数据集的每一行并执行必要的功能。