SQL计数返回错误的结果

时间:2016-11-14 13:30:00

标签: mysql sql phpmyadmin

我想知道满足特定条件的子命令的数量。

我想计算order_payment_id为'3'的实例数。并且其状态已发货,但我很难让SQL计数功能起作用。

- 我有第一个查询在表格中显示结果:

SELECT
    order_id, order_number, lh45p_users.name, lh45p_hikamarket_vendor.vendor_name, order_status, order_created, order_full_price, order_payment_id
FROM
    lh45p_hikashop_order
INNER JOIN
    lh45p_hikamarket_vendor ON lh45p_hikashop_order.order_vendor_id = lh45p_hikamarket_vendor.vendor_id
INNER JOIN
    lh45p_hikashop_user ON lh45p_hikashop_order.order_user_id = lh45p_hikashop_user.user_id
INNER JOIN
    lh45p_users ON lh45p_hikashop_user.user_cms_id = lh45p_users.id
WHERE
    order_status = 'shipped' AND order_payment_id = '3'
ORDER BY
    lh45p_hikashop_order.order_created ASC

- 这是显示的表格(我更改了一些值以确保机密性):

ID | N° de commande | Client | Vendeur | Statut | Date | Prix |
:---: | :---: | :---: | :---: | :---: | :---: | :---: |
111 | 2016-0110 | Client 1 | Vendeur 1 | shipped | 29-02-2016 | 94.8 |
116 | 2016-0115 | Client 2 | Vendeur 2 | shipped | 11-03-2016 | 94.8 |
131 | 2016-0130 | Client 3 | Vendeur 3 | shipped | 10-04-2016 | 94.2 |
136 | 2016-0135 | Client 4 | Vendeur 4 | shipped | 16-06-2016 | 219.6 |
157 | 2016-0156 | Client 5 | Vendeur 5 | shipped | 04-08-2016 | 94.2 |
162 | 2016-0161 | Client 6 | Vendeur 6 | shipped | 09-08-2016 | 108 |
178 | 2016-0177 | Client 7 | Vendeur 7 | shipped | 10-09-2016 | 31.2 |
193 | 2016-0192 | Client 8 | Vendeur 8 | shipped | 18-10-2016 | 31.5 |
194 | 2016-0192 | Client 9 | Vendeur 9 |shipped | 18-10-2016 | 55.4 |
196 | 2016-0195 | Client 10 | Vendeur 10 | shipped | 02-11-2016 | 57.1 | 

- 这是查询实例数的查询(我在没有连接的情况下使用相同的简化查询):

SELECT
    COUNT(order_id) AS nb_order
FROM
    lh45p_hikashop_order
WHERE
    order_payment_id = '3' AND order_status = 'shipped'

当我在phpMyAdmin中使用此查询时,我会在返回10时找到17的结果.phpMyAdmin中的表lh45p_hikashop_order包含24行。当我在Joomla中显示结果时,我找到了21。

我在 stackoverflow 上就此主题提出了其他问题。

提前致谢

(编辑)解决方案:

我设法纠正了我的错误,我保留了RiggsFolly指定的连接。

以下是有效的查询:

SELECT
    COUNT(order_id) AS nb_order
FROM
    lh45p_hikashop_order
INNER JOIN
    lh81p_hikamarket_vendor ON lh45p_hikashop_order.order_vendor_id = lh45p_hikamarket_vendor.vendor_id
INNER JOIN
    lh45p_hikashop_user ON lh45p_hikashop_order.order_user_id = lh45p_hikashop_user.user_id
INNER JOIN
    lh45p_users ON lh45p_hikashop_user.user_cms_id = lh45p_users.id
WHERE
    order_status = 'shipped' AND order_payment_id = '3'
ORDER BY
    lh45p_hikashop_order.order_created ASC

再次感谢

2 个答案:

答案 0 :(得分:1)

内部联接仅返回匹配的行 显然,表中的某些行在其他表中没有匹配项。

答案 1 :(得分:0)

你尝试过吗?     Select Count(*) As InstanceCount ....?

不改变其他部分?