2016-05-18 15 views
1

Я хочу сделать счет продуктов, которые были отключены и имеют параметры. Сначала я пытаюсь проверить одну таблицу. Oc_product - продукт отключен, а затем я хочу проверить этот статус (если отключен продукт) и проверить идентификатор продукта в другой таблице, если у этого идентификатора продукта есть параметры.mysql one, где зависит от другого

Я стараюсь, как это, но при этом показывать результат состояния = 0 продуктов.

select COUNT(*) 
FROM oc_product 
WHERE status=0 
    AND product_id IN (SELECT product_id FROM oc_product_option) 
+3

, конечно, потому что вы добавили статус = 0 вправо? какова ваша проблема? – vaso123

+0

hm, мне нужно подсчитать, где продукт в oc_product установлен на статус = 0, а затем из этого результата, чтобы проверить, сколько продуктов со статусом 0 в oc_product_option имеют строки. – Marty

+0

И что не так с вашим текущим запросом? – sagi

ответ

0

Если у меня возникли проблемы с вашим вопросом, вы хотите присоединиться к столам.

SELECT COUNT(*) FROM oc_product ocp 
INNER JOIN oc_product_option ocpo ON ocpo.product_id = ocp.id 
WHERE ocp.status=0 

так только те строки будут возвращает где product_id в варианте таблицы (ocpo.product_id = ocp.id)

+0

Я получаю ошибку в синтаксисе SQL с этим запросом – Marty

+0

@Marty я использовал ваш запрос и запустил в моей базе данных! отлично! Я получаю тот же ответ, который вам нужен. –

+0

@kiran gadhvi # 1064 - у вас есть ошибка в вашем синтаксисе sql, проверьте руководство, соответствующее версии вашего сервера mariadb, для правильного синтаксиса для использования рядом с 'ocp INNER JOIN oc_product_option ocpo ON ocpo.product_id = ocp.id WHERE ocp.st 'в строке 1 – Marty

0

Если я правильно понимаю, вы хотите, количество всех продуктов со статусом 0, а также количество всех продуктов со статусом 0, которые имеют параметры.

Если да, то LEFT OUTER JOIN продукты с опциями. Затем вы можете подсчитать DISTINCT product_id из таблицы продуктов, чтобы получить количество товаров, и вы можете подсчитать DISTINCT product_id из таблицы параметров продукта, чтобы получить количество продуктов с опциями. COUNT (имя_столбца) не подсчитывает строки, где значение column_name равно NULL, поэтому не будет рассчитывать продукты, в которых не было найдено подходящих параметров.

SELECT COUNT(DISTINCT oc_product.product_id) AS product_count, 
     COUNT(DISTINCT oc_product_option.product_id) AS product_with_options_count 
FROM oc_product 
LEFT OUTER JOIN oc_product_option 
ON oc_product.product_id = oc_product_option.product_id 
WHERE oc_product.status = 0 
Смежные вопросы