6

现在在网上浏览了一段时间,似乎无法找到与我想要的类似的东西。我知道这与我编写查询的方式有关,但我们将不胜感激。

我正在尝试做的基本工作是:

  • 如果表不存在,则将一些项目插入表中
  • 如果项目确实存在,则更新它

它以以下格式存在:

名称、条形码、项目、数量、位置、价格和日期

名称 - 可以在多行中使用 条形码 - 用于特定项目,但可以用作多个位置 项目 - 与条形码相同但包含名称 数量 - 不言自明的位置 - 这可以是不同的位置 价格 - 附加到特定商品日期 - 上次购买该商品的时间

棘手的是,一个“名称”可以在不同的位置以不同的价格包含多个项目(条形码和项目)。这个想法是客户可以看到他们在设定的时间购买了多少物品,因此他们知道需要以多少价格出售它。

但是,他们购买它的价格可能会有所不同,因此如果价格与之前购买的价格不同,他们需要在表中创建另一行。

整个事情背后的想法是它记录每个位置每个项目的“名称”有多少,然后是他们购买它的价格以及他们最后一次购买的时间。

希望这是有道理的。

在伪代码中:

    Insert into table if does not exist
    - name, barcode, item, quantity, location, price and date
    If name, barcode, item, location and price are the same
    - Update quantity and date (if more recent)
4

3 回答 3

14
于 2013-01-10T13:48:07.083 回答
5
于 2013-01-10T13:48:24.150 回答
1

感谢以上人员的所有帮助,我最终找到的解决方案非常接近两者。在下面找到它:

INSERT INTO `stock`
    (name, barcode, item, quantity, location, price, date)  
VALUES
    (?,?,?,?,?,?,?)                         
ON DUPLICATE KEY UPDATE
     quantity = CASE WHEN 
                VALUES(date) < $date
                THEN quantity + $quantity
                ELSE quantity 
                END,
    date = CASE WHEN 
                VALUES(date) < $date
                THEN VALUES(date)
                ELSE $date
                END
于 2013-01-11T09:59:45.630 回答