PHP / MySQL:计算两个不相关的表并以html格式显示

时间:2014-12-01 20:34:16

标签: php html mysql

PHP新手如此道歉: - )

我在MySQL中有两个表,但它们没有共同的列供我加入。

我想使用PHP创建一个html表,该表从两个MySQL表中提取数据,并使用第二个表中的字段来乘以第一个表中的值。我已连接数据库确定并可以在html表中显示第一个表,但无法获取导入的第二个表值以用于货币计算。

简化 - >

Table 1
--------
part_name: Text
Part_value: decimal

Table 2 (only 5 rows / currencies will be used)
--------
currency_name: Text
exch_rate: decimal

html表格应如下所示:

  

part_name / part_value / part_value * exch_rate (from table 2, row 1) / part_value * exch_rate (from table 2, row 2) / part_value * exch_rate (from table 2, row 3) etc...

我目前的html显示如下(请注意Price xxx列中的缺失值:

Part Name     Part Value     Price USD   Price CNY   (Header Row)
--------------------------------------------------
part_name  /  part_value  /  

我使用SELECT语句引入表1的值并使用IF迭代行。 我应该怎么做才能获得exch_rate值来计算每个价格xxx'列。

对不起,如果这看起来有点模糊。我正在尝试这样做,所以如果你能指出我正确的方向,我将尝试自己编码。最好的学习方法: - )

1 个答案:

答案 0 :(得分:0)

您可以执行交叉联接:

select
  p.*,
  c.*,
  p.part_value * c.exch_rate as localValue
from
  Parts p
  cross join Currency c

但是你仍然需要将这些信息分开才能在表格中显示出来。

或者您可以简单地查询相关部分,在单独的查询中获取汇率,并在PHP中执行乘法,大致类似于:

<?php
$parts = <<query all parts>>
$currencies = <<query all currencies>>

// Column headers
?><tr><th>name</th><?

foreach($currencies as $currency) {
  ?><th><?=$currency->currency_name?></th><?
}
?></tr><?

// Part data
foreach ($parts as $part) {
  // Start row and show part name
  ?><tr><td><?=$part->part_name?></td><?

  // Each of the prices
  foreach($currencies as $currency) {
    ?><td><?=$part->part_value * $currency->exchange_rate?>;
  }
  ?></tr><?
}

正如您所看到的,代码非常简单,只需要嵌套的foreach循环,迭代部分,然后遍历每个部分的每种货币。这可能更容易,也不那么脏[&#39;而不是迭代交叉连接的结果并确定何时开始新的行。

您需要对数据库提出额外请求,但另一方面,您将返回更少的数据。毕竟,P部分与C货币的交叉连接将导致i P * C行,而两个查询导致P + C行。