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'列。
对不起,如果这看起来有点模糊。我正在尝试这样做,所以如果你能指出我正确的方向,我将尝试自己编码。最好的学习方法: - )
答案 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行。