1

我有 3 个表(示例),没有关键限制,
一个是 FRUITTABLE,第二个是 FRUITPRICE,第三个是 FRUITTABLE 中的组合
,我们插入正在出售的东西,颜色(即香蕉绿色或黄色),味道,
在 FRUITPRICE 中,我们插入如何多件,如果适用,包装和销售时间

这就是我创建组合的方式

SELECT FT.FRUITS,  FT.COLOR, FT.TASTE, COUNT(FP.SALES) AS TOTAL, FP.TIMESOLD
FROM FRUITSTABLE FT
JOIN FRUTSPRICE FP  ON FT.ID = FP.ID
WHERE FP.TIMESOLD BETWEEN '2013-12-01 11:00:00' AND '2013-12-01 12:00:00'
GROUP BY FT.FRUITS, FT.COLOR, FT.TASTE

在 COMBINATIONS 表中,我们所做的是对它进行分组和计数,这样我们就可以看到每小时最有可能好的水果组合

所以组合将每小时发生一次

让我们说

即:mango,yellow,sour,10, 3:00PM
即:mango,yellow,sour,12, 4:00PM
即:mango,yellow,sour,14, 5:00PM
即:mango,yellow,sour,10, 6 :00PM

所以每个小时,假设下午 3:00
我们插入
mango,yellow,sour,1, 3:00 PM
然后另一个客户在同一时间购买了这个组合,所以数据将是
mango,yellow,sour,2, 3:00 PM

现在,在组合中,我们插入它。但如果组合已经存在,我真的不知道如何更新它..我们需要更新它,比如说每 5 分钟一次,也许我可以设法创建将调用 SP 的 SP 和 EVENT(希望这是正确的)

唯一的问题是我不知道如何:选择、插入、如果存在(FT.FRUITS、FT.COLOR、FT.TASTE 的组合相同)更新
请让我知道我的想法是否可行..
谢谢提前

PS。在某些情况下,我已经在重复键更新上使用了插入
。我们确定组组合和每小时总销售额(FP.SALES)(TIMESOLD)

编辑

PS 替换为不适用以及
我不能使用唯一键的原因是因为它将无用..
因为每个组合都会发生每小时..老实说,
我已经有了解决方案。但它不会每分钟更新一次,
我的解决方案将每小时插入一次。
这样做的不利方面是网页中的记录不会是实时的,
我需要弄清楚的是如何
在重复键更新时做一些像插入一样的事情(但不使用主键)
这样表将被更新,并且如果可以创建解决方法,记录将是实时的

抱歉,如果我必须多次编辑问题。我希望这是建设性的..谢谢你们的帮助...

4

3 回答 3

1

您可能正在寻找这个:

插入表或更新(如果存在)(MySQL)

或者:

您实际上可以将组合(FT.FRUITS、FT.COLOR、FT.TASTE)设置为键,这样它们可以单独具有多个值,但在表中它们的组合将是唯一的。

于 2013-09-20T16:20:34.103 回答
0

创建Compound Key http://en.wikipedia.org/wiki/Compound_key将是正确的解决方案。但是,如果您出于某种原因无法创建密钥,请反过来执行:

UPDATE myTable SET [whatever goes here] WHERE FRUITS = [currentFruit] AND COLOR = [currentColor] AND TASTE = [currentTaste]

现在,使用您的编程语言并检索affected row count. 如果它是 1 - 你就完成了。如果为 0:您需要插入,因为没有与您的更新语句匹配的行。

于 2013-09-20T17:28:13.373 回答
0

以防万一,如果您使用加载数据语句而不是插入(例如从 csv 或自定义分隔文件中读取)。您可以使用替换标志。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2013-09-20T17:39:31.307 回答