0

これは私のデータです

newCatCols
=====
id      sku     name
---------------
1           4001    Black
2           4031    Red
3           4021    Black
4           4041    Blush

products
=====
id      sku     Price
---------------
1           4001    123
2           4031    232
3           4021    453
4           4041    233

これは私のクエリです

SELECT COUNT( * ) AS numTotal
FROM `products`
INNER JOIN `colors` ON `products`.`sku` = `colors`.`sku`
WHERE (
`name` = 'Apple_Black'
OR `name` = 'Black'
OR `name` = 'Black_Aubergine'
OR `name` = 'Black_Blush'
OR `name` = 'Black_Slate'
OR `name` = 'Black_Turquoise'
OR `name` = 'Red_Black'
OR `name` = 'Sapphire_Black'
OR `name` = 'Multi Apple'
)
AND `status` = '1'
AND `category` = 'sig'
GROUP BY `products`.`sku`
ORDER BY `products`.`rank` ASC

理想的には、この行を変更するだけで完璧になるのでSELECT COUNT( * ) AS numTotal、それを変更して機能させるだけですか? データは現在、行の値が 1 の製品のリストを返しているため、ループしているだけで、すべての行の合計値をカウントしていません。

リターン時に合計数を表示する必要があります。たとえば、4 と表示する必要があります。

Output
 =====
 numTotal
 ---------------
 4
4

1 に答える 1

1

これにより、条件に一致する個別の製品 SKU の数が返されます。

SELECT COUNT(distinct `products`.`sku`) AS numTotal
FROM `products`
INNER JOIN `colors` ON `products`.`sku` = `colors`.`sku`
WHERE `name` in ('Apple_Black'
        ,'Black'
        ,'Black_Aubergine'
        ,'Black_Blush'
        ,'Black_Slate'
        ,'Black_Turquoise'
        ,'Red_Black'
        ,'Sapphire_Black'
        ,'Multi Apple'
    )
    AND `status` = '1'
    AND `category` = 'sig'
于 2012-10-30T15:33:51.507 に答える