mysql - SQL 计数返回错误结果

标签 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

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

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 中使用此查询时,我发现结果为 17,而它应该返回 10。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

再次感谢

最佳答案

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

关于mysql - SQL 计数返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589917/

相关文章:

mysql - 在MySQL中进行特殊排序,3个随机最高分,比所有随机

mysql - 完全连接两个不同的 SELECT 查询

javascript - 使用 Ajax 和 Jquery 发送数据

mysql - SQL查询Where子句中的Between,AND & OR未给出正确答案

PHP/SQL/Mysql/phpmyadmin - 外键

mysql - 如何使用mysql通过将特定时间(秒)添加到现有时间戳来更新列中的时间戳值?

php - 登录 phpMyAdmin 错误

php - 服务器没有响应(或者本地 MySQL 服务器的套接字配置不正确)

php - 将新变量定义为旧值加 1 的总和

mysql - 如何获得任意连续范围内的最大值