Я хочу знать количество подкоманд, отвечающих определенным условиям.SQL count возвращает плохой результат
Я хочу подсчитать количество экземпляров, где 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, я нахожу результат 17, когда он должен вернуться 10. Таблица lh45p_hikashop_order в phpMyAdmin содержит 24 строки. И когда я показываю результат в Joomla, я нахожу 21.
Я консультировался с другими вопросами, уже отправленными по адресу stackoverflow на эту тему.
Заранее спасибо
(EDIT) РЕШЕНИЕ:
мне удалось исправить свою ошибку, я все стыки, как указано 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
Еще раз спасибо
Используйте exectly тот же запрос со всеми объединениями, просто измените 'SELECT COUNT (order_id) AS nb_order' Какое количество вы получите? ??? – RiggsFolly
Возможно, внутренние соединения удалили некоторые записи из lh45p_hikashop_order из набора результатов. Вы сравниваете яблоки с грушами, если не просматриваете внутренние соединения. – Shadow