【发布时间】:2020-06-30 07:38:35
【问题描述】:
我有两个表 feed_new 和 feed_old,它们都有 id、name、price。当用户进行价格检查时,将能够查看包含产品的整个列表,然后查看它们之间的不同(价格变化、产品删除/缺失、库存变化)
我进行查询以提取新旧提要之间的差异,但我需要在一个查询中显示和其余记录不仅不同,该怎么做?
$query = $this->db->query("SELECT fo.id, fo.name,fo.price,fo.product_code, fo.stock, fn.id AS id_new, fn.name AS name_new, fn.price AS price_new, fn.product_code AS product_code_new, fn.stock AS stock_new
FROM feed_old fo
LEFT JOIN feed_new fn ON (fn.product_code = fo.product_code)
WHERE fo.price <> fn.price OR fn.product_code IS NULL ");
这将导致:
id name price product_code stock id_new name_new price_new product_code_new stock_new
4659 Product 481 9997454 29 NULL NULL NULL NULL NULL
4665 Product1 326 9997460 0 4665 Product1 3260 9997460 0
4666 Product2 324 9997461 2 4666 Product2 3240 9997461 2
4644 Product3 217 9998929 42 NULL NULL NULL NULL NULL
然后我可以像这样循环结果
<table class="table">
<?php foreach ($query as $product): ?>
<tr>
<td> <?php echo $product['name'] ?> </td>
<td>
<?php echo $product['price'] ?>
<?php if ($product['price_new'] != ''): ?>
<?php if $product['price'] <> $product['price_new']): ?>
<?php echo "New price" ?>
<?php endif; ?>
<?php elseif($product['price_new'] == '') ?>
<?php echo "Product deleted" ?>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
【问题讨论】:
-
我看到了,还是不明白问题出在哪里@Strawberry
-
那你的公司很好
-
在子查询中从两个表(UNION)中收集产品代码,然后将两个表连接到它。
product_code在每个表中必须是唯一的(如果不是,则您当前的查询不清楚)。