Php 尝试联接两个表时,Sum不正确

Php 尝试联接两个表时,Sum不正确,php,mysql,sql,codeigniter,sum,Php,Mysql,Sql,Codeigniter,Sum,在使用联接时,我很难从qty列中获得正确的总和。当我试图从paymentType表中获取timestamp并将它们与orders和paymentType表中的rowid连接起来,然后将timestamp在天(天(从unixtime(paymentType.timestamp)) 我想要使用paymentType表中的时间戳按小时计算的数量之和,唯一的链接是rowid(这是codeigniter的购物车模块的rowid)。逻辑上的问题(至少对我来说)是,orders表(因为这是每种产品)中的行数比

在使用联接时,我很难从
qty
列中获得正确的总和。当我试图从
paymentType
表中获取
timestamp
并将它们与
orders
paymentType
表中的
rowid
连接起来,然后将
timestamp
在天
(天(从unixtime(paymentType.timestamp))

我想要使用
paymentType
表中的
时间戳
按小时计算的
数量之和,唯一的链接是
rowid
(这是codeigniter的购物车模块的
rowid
)。逻辑上的问题(至少对我来说)是,
orders
表(因为这是每种产品)中的行数比
paymentType
表中的行数多(这只是为了跟踪使用的是借记还是现金)。当我将这些表合并在一起时,每小时的总和将乘以
orders.rowid paymentType.rowid
中的每次点击次数

如果解释不好,我很抱歉,但我希望这是可以理解的,我可以在这件事上得到帮助

我至少试过10个问题,但似乎没有一个是我想要的

以下是我的
订单

+---------+----+-------+-----+----------+------------------+----------------------------------+
| orderID | id | price | qty | subtotal |       name       |              rowid               |
+---------+----+-------+-----+----------+------------------+----------------------------------+
|       3 | 49 |    35 |   1 |       35 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|       4 | 24 |    35 |   1 |       35 | Monster Energy   | 1ff1de774005f8da13f42943881c655f |
|       5 | 49 |    35 |   1 |       35 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|       6 | 19 |    20 |   1 |       20 | Sprite 0.5L      | 1f0e3dad99908345f7439f8ffabdffc4 |
|       7 |  1 |    25 |   1 |       25 | Pringles         | c4ca4238a0b923820dcc509a6f75849b |
|       8 | 43 |    20 |   1 |       20 | Lån av stekovn   | 17e62166fc8586dfa4d1bc0e1742c08b |
|       9 | 46 |    35 |   1 |       35 | Burn             | d9d4f495e875a2e075a1a4a6e1b9770f |
|      10 | 49 |    35 |   3 |      105 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|      11 | 49 |    35 |   1 |       35 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|      12 | 29 |    25 |   1 |       25 | Potetskruer      | 6ea9ab1baa0efb9e19094440c317e21b |
|      13 | 16 |    20 |   1 |       20 | Coca-Cola 0.5L   | c74d97b01eae257e44aa9d5bade97baf |
|      14 | 46 |    35 |   1 |       35 | Burn             | d9d4f495e875a2e075a1a4a6e1b9770f |
|      15 |  1 |    25 |   1 |       25 | Pringles         | c4ca4238a0b923820dcc509a6f75849b |
|      16 | 18 |    20 |   1 |       20 | Eventyrbrus 0.5L | 6f4922f45568161a8cdf4ad2299f6d23 |
|      17 | 16 |    20 |   1 |       20 | Coca-Cola 0.5L   | c74d97b01eae257e44aa9d5bade97baf |
|      18 | 15 |    30 |   1 |       30 | Coca-Cola 1.5L   | 9bf31c7ff062936a96d3c8bd1f8f2ff3 |
|      19 | 19 |    20 |   1 |       20 | Sprite 0.5L      | 1f0e3dad99908345f7439f8ffabdffc4 |
|      20 | 50 |    20 |   1 |       20 | Stratos bar      | c0c7c76d30bd3dcaefc96f40275bdc0a |
+---------+----+-------+-----+----------+------------------+----------------------------------+
+-----------+-------------+------------+----------------------------------+
| paymentID | paymentType | timestamp  |              rowid               |
+-----------+-------------+------------+----------------------------------+
|         3 | Kort        | 1424447799 | f457c545a9ded88f18ecee47145a72c0 |
|         4 | Kort        | 1424448791 | 1ff1de774005f8da13f42943881c655f |
|         5 | Kort        | 1424452822 | f457c545a9ded88f18ecee47145a72c0 |
|         6 | Kort        | 1424454483 | c4ca4238a0b923820dcc509a6f75849b |
|         7 | Kort        | 1424454665 | d9d4f495e875a2e075a1a4a6e1b9770f |
|         8 | Kontant     | 1424454799 | f457c545a9ded88f18ecee47145a72c0 |
|         9 | Kontant     | 1424454825 | f457c545a9ded88f18ecee47145a72c0 |
|        10 | Kort        | 1424454870 | 6ea9ab1baa0efb9e19094440c317e21b |
|        11 | Kontant     | 1424455510 | d9d4f495e875a2e075a1a4a6e1b9770f |
|        12 | Kort        | 1424455847 | c4ca4238a0b923820dcc509a6f75849b |
|        13 | Kontant     | 1424456025 | 6f4922f45568161a8cdf4ad2299f6d23 |
|        14 | Kontant     | 1424456099 | c74d97b01eae257e44aa9d5bade97baf |
|        15 | Kontant     | 1424456148 | 9bf31c7ff062936a96d3c8bd1f8f2ff3 |
|        16 | Kontant     | 1424456242 | c0c7c76d30bd3dcaefc96f40275bdc0a |
|        17 | Kort        | 1424456266 | c74d97b01eae257e44aa9d5bade97baf |
|        18 | Kort        | 1424456445 | c0c7c76d30bd3dcaefc96f40275bdc0a |
|        19 | Kort        | 1424456964 | 70efdf2ec9b086079795c442636b55fb |
|        20 | Kort        | 1424457701 | 1ff1de774005f8da13f42943881c655f |
+-----------+-------------+------------+----------------------------------+
这是
paymentType

+---------+----+-------+-----+----------+------------------+----------------------------------+
| orderID | id | price | qty | subtotal |       name       |              rowid               |
+---------+----+-------+-----+----------+------------------+----------------------------------+
|       3 | 49 |    35 |   1 |       35 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|       4 | 24 |    35 |   1 |       35 | Monster Energy   | 1ff1de774005f8da13f42943881c655f |
|       5 | 49 |    35 |   1 |       35 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|       6 | 19 |    20 |   1 |       20 | Sprite 0.5L      | 1f0e3dad99908345f7439f8ffabdffc4 |
|       7 |  1 |    25 |   1 |       25 | Pringles         | c4ca4238a0b923820dcc509a6f75849b |
|       8 | 43 |    20 |   1 |       20 | Lån av stekovn   | 17e62166fc8586dfa4d1bc0e1742c08b |
|       9 | 46 |    35 |   1 |       35 | Burn             | d9d4f495e875a2e075a1a4a6e1b9770f |
|      10 | 49 |    35 |   3 |      105 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|      11 | 49 |    35 |   1 |       35 | Red Bull Stor    | f457c545a9ded88f18ecee47145a72c0 |
|      12 | 29 |    25 |   1 |       25 | Potetskruer      | 6ea9ab1baa0efb9e19094440c317e21b |
|      13 | 16 |    20 |   1 |       20 | Coca-Cola 0.5L   | c74d97b01eae257e44aa9d5bade97baf |
|      14 | 46 |    35 |   1 |       35 | Burn             | d9d4f495e875a2e075a1a4a6e1b9770f |
|      15 |  1 |    25 |   1 |       25 | Pringles         | c4ca4238a0b923820dcc509a6f75849b |
|      16 | 18 |    20 |   1 |       20 | Eventyrbrus 0.5L | 6f4922f45568161a8cdf4ad2299f6d23 |
|      17 | 16 |    20 |   1 |       20 | Coca-Cola 0.5L   | c74d97b01eae257e44aa9d5bade97baf |
|      18 | 15 |    30 |   1 |       30 | Coca-Cola 1.5L   | 9bf31c7ff062936a96d3c8bd1f8f2ff3 |
|      19 | 19 |    20 |   1 |       20 | Sprite 0.5L      | 1f0e3dad99908345f7439f8ffabdffc4 |
|      20 | 50 |    20 |   1 |       20 | Stratos bar      | c0c7c76d30bd3dcaefc96f40275bdc0a |
+---------+----+-------+-----+----------+------------------+----------------------------------+
+-----------+-------------+------------+----------------------------------+
| paymentID | paymentType | timestamp  |              rowid               |
+-----------+-------------+------------+----------------------------------+
|         3 | Kort        | 1424447799 | f457c545a9ded88f18ecee47145a72c0 |
|         4 | Kort        | 1424448791 | 1ff1de774005f8da13f42943881c655f |
|         5 | Kort        | 1424452822 | f457c545a9ded88f18ecee47145a72c0 |
|         6 | Kort        | 1424454483 | c4ca4238a0b923820dcc509a6f75849b |
|         7 | Kort        | 1424454665 | d9d4f495e875a2e075a1a4a6e1b9770f |
|         8 | Kontant     | 1424454799 | f457c545a9ded88f18ecee47145a72c0 |
|         9 | Kontant     | 1424454825 | f457c545a9ded88f18ecee47145a72c0 |
|        10 | Kort        | 1424454870 | 6ea9ab1baa0efb9e19094440c317e21b |
|        11 | Kontant     | 1424455510 | d9d4f495e875a2e075a1a4a6e1b9770f |
|        12 | Kort        | 1424455847 | c4ca4238a0b923820dcc509a6f75849b |
|        13 | Kontant     | 1424456025 | 6f4922f45568161a8cdf4ad2299f6d23 |
|        14 | Kontant     | 1424456099 | c74d97b01eae257e44aa9d5bade97baf |
|        15 | Kontant     | 1424456148 | 9bf31c7ff062936a96d3c8bd1f8f2ff3 |
|        16 | Kontant     | 1424456242 | c0c7c76d30bd3dcaefc96f40275bdc0a |
|        17 | Kort        | 1424456266 | c74d97b01eae257e44aa9d5bade97baf |
|        18 | Kort        | 1424456445 | c0c7c76d30bd3dcaefc96f40275bdc0a |
|        19 | Kort        | 1424456964 | 70efdf2ec9b086079795c442636b55fb |
|        20 | Kort        | 1424457701 | 1ff1de774005f8da13f42943881c655f |
+-----------+-------------+------------+----------------------------------+
编辑: 到目前为止,我尝试过的SQL查询还有很多,但这些都是最新的。我认为这些是最“正确”的


预期结果是将“红牛存储”(即)的数量列按小时分组,对每天进行汇总。

您可以尝试以下方法:

select o.name
     , pt.rowid
     , sum(o.qty)
     , hour(from_unixtime(pt.timestamp))
     , day(from_unixtime(pt.timestamp))
from orders o
join paymentType pt using(rowid)
where o.name = 'Red Bull Stor'
group by o.name
       , o.rowid
       , hour(from_unixtime(pt.timestamp))
       , day(from_unixtime(pt.timestamp));

若您提供了两个最接近您答案的问题,这将是一个很好的问题。@Cᴏ好吧,那就足够了。一个好问题将提供适当的DDL和期望的结果集。@草莓:很公平。至少对某人的第二篇帖子来说是正确的:)@Cory我已经用我迄今为止尝试过的最新MySQL查询更新了原始问题。如果需要为预期结果集模拟som示例,我将根据迄今为止得到的查询进行尝试。@StrawberryThank you@notulysses!-不幸的是,我拥有的数据集并不完整,正如我所发现的那样,我尝试过的大量查询实际上都能按预期工作(给了我正确的结果),但由于我的表中的数据远未完成,我无法产生我想要的结果。(顺便说一句,codeigniter中的rowid是产品的标识符,而不是购物车或订单……这是我在生成正确数据集时遇到困难的主要原因)再次感谢所有帮助,您的查询完全符合我的要求:-)@FredrikAngellMoe:很高兴帮助您