Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite查询智能行与克隆表的数学关系?_Sql_Sqlite_Math - Fatal编程技术网

Sqlite查询智能行与克隆表的数学关系?

Sqlite查询智能行与克隆表的数学关系?,sql,sqlite,math,Sql,Sqlite,Math,好吧,这很难解释,但我会试试。 买桌 ---------------------------------------------------------------------------------------------------------- id itemId amount price bought collected slot aborted playerHash 1 2607 4111 200600 0 0 0 0

好吧,这很难解释,但我会试试。

买桌

----------------------------------------------------------------------------------------------------------
id  itemId  amount  price   bought  collected slot  aborted playerHash
1   2607    4111    200600  0       0         0     0       1020628
2   11335   1       0       0       0         3     1       1020628
3   2495    6546    5306    0       0         1     0       1020628
4   1127    101     58300   101     0         5     0       37763265
5   14479   1       107500  0       0         2     0       37763265
6   1       100     1       0       0         0     0       3        *simulate a problem Buy
销售台

----------------------------------------------------------------------------------------------------------
id  itemId  amount  price   sold  collected slot  aborted  playerHash
1   8       8234    132950  7244  0         4     0        1020628
2   9       1980    132950  0     0         5     0        1020628
3   9       100     126300  0     0         2     0        1020628
4   3024    8888    10900   8888  0         0     0        37763265
5   1       100     1       1     0         0     0        1       *simulate a problem Sell
6   1       100     1       1     0         0     0        2       *simulate a problem Sell
比赛结果

----------------------------------------------------------------------------------------------------------
S.itemId  S.amount  S.price  S.sold  S.collected  S.slot  S.playerHash  B.itemId  B.amount  B.price  B.bought  B.collected  B.slot  B.playerHash
123       2         444      1       0            0       15431         123       34535     448      3         0            1       3455
123       2         444      1       0            0       15431         123       7567      444      333       0            3       7651

*simulated result rows of wrong data

1         100       1        1       0            0       1             1         100       1        0         0            0       3
1         100       1        1       0            0       2             1         100       1        0         0            0       3
我试图进行的查询必须将相同itemId的买家与相同itemId的卖家匹配起来。
必须确保买方和卖方都没有在他们的项目上中止布尔设置。 也要处理那些支付比卖家首先想要的更多的买家。
还要检查以确保卖家正在销售的金额尚未售出。
还要检查以确保买家购买的金额尚未购买。
以及每批处理100次销售。

下面的查询在大多数情况下都很有效。

我试图在查询中解决的问题是使其在数学方面更加智能。
假设销售台有playerHash 1和playerHash 2
itemId 8,金额为100,playerHash列出的销售额为1。
itemId 8,金额为100,playerHash列出的销售额为1,假设为2。
现在有一位买家叫playerHash 3,他购买的物品ID为8,金额为100。

现在的问题是
playerHash1无法出售其全部100份itemId 8,因为他只剩下99份(售出1份)
playerHash2无法出售其全部100份itemId 8,因为他只剩下99份(售出1份)相同的故事

现在查询应该返回
playerHash 1出售给playerHash 3买家,行末有一个名为willBuyAmount的新列,将其设置为99
下一行应该知道playerHash 1已售出=100(不更新数据库,也不更改前一行的售出列)
Dsplay将playerHash 2出售给playerHash 3买家,并在行尾添加一个名为willBuyAmount的新coulmn,将其设置为1。
playerHash2现在应该仍然能够知道它还有98个剩余(售出1)+1个临时位置idk可能会克隆表?
对于相同itemId和>=价格的未来买家,应该能够从playerHash2购买该商品剩余金额的98。

这是我想输入到查询中的数学

VAR amountBuyerNeeds = (B.amount - B.bought)
VAR amountSellerStock = (S.amount - S.sold)
//update these values in the simulated cloned table data.
B.bought = IF(amountBuyerNeeds > amountSellerStock, (B.bought + amountSellerStock), B.amount)
S.sold = IF(amountSellerStock > amountBuyerNeeds, (S.sold + amountBuyerNeeds), S.amount)
//to real row print out
willBuyAmount = IF(amountBuyerNeeds > amountSellerStock, amountSellerStock, amountBuyerNeeds)
查询ATM看起来像这样

SELECT S.itemId AS sell_itemId,
       S.amount AS sell_amount,
       S.price AS sell_price,
       S.sold AS sell_sold,
       S.collected AS sell_collected,
       S.slot AS sell_slot,
       S.playerHash AS sell_playerHash,
       B.itemId AS buy_itemId,
       B.amount AS buy_amount,
       B.price AS buy_price,
       B.bought AS buy_bought,
       B.collected AS buy_collected,
       B.slot AS buy_slot,
       B.playerHash AS buy_playerHash
  FROM Buying AS B, 
       Selling AS S
ON B.itemId = S.itemId 
AND
B.aborted = 0 
AND
S.aborted = 0 
AND
B.price >= S.price 
AND
S.sold < S.amount 
AND
B.bought < B.amount
 ORDER BY B.price DESC
 LIMIT 100;
选择S.itemId作为sell\u itemId,
美国金额作为销售金额,
以美国价格作为卖出价格,
以卖出的形式在美国卖出,
美国作为销售单位收取,
美国插槽作为销售插槽,
S、 当卖花花公子时,
B.itemId作为buy_itemId,
B.作为购买金额的金额,
B.价格为买入价,
B.像买一样买,
B.按买入价收取,
B.插槽作为购买插槽,
B.playerHash作为buy_playerHash
以B的身份购买,
以S的形式销售
在B.itemId=S.itemId上
及
B.中止=0
及
S.0=0
及
B.价格>=S.价格
及
已售出金额<已售出金额
及
B.购买
是的,你可能会想,为什么我在
sqlite中使用了
mysql标记
我没有使用
sql查询标记
,它变成了mysql,所以应该是一样的。等等,“sql query”别名是“mysql”?(看起来…)不…看起来它是“sql”的别名。不知道为什么“mysql”会出现;编辑出来。哦,天啊,我想那是我的错误。