【问题标题】:MYSQL How to compare price from two tables and show all resultsMYSQL如何比较两个表的价格并显示所有结果
【发布时间】: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 在每个表中必须是唯一的(如果不是,则您当前的查询不清楚)。

标签: php mysql select


【解决方案1】:

如果我理解正确,则无需在查询中使用 fo.price fn.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) 

此查询将获取所有包含(或不包含)相关新提要的旧提要

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 2014-09-02
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多