Làm thế nào về việc sử dụng IN thay thế
SELECT `salesorder`,
`masterproduct`,
`family`,
`birthstamp`,
`duedate`,
COUNT( * ) AS `total`
FROM `report`
WHERE `birthstamp` BETWEEN '$startDT' AND '$endDT'
AND `family` IN ('Software_1Y','XI_1Y','PI_1Y')
GROUP BY `salesorder`,
`masterproduct`,
`family`,
`duedate`;
Lý do tại sao không có giá trị nào được trả về, là do phần này
AND `family` = 'Software_1Y'
AND `family = 'XI_1Y'
AND `family` = 'PI_1Y'
family
không thể có cả 3 giá trị cùng một lúc, nhưng nó có thể là 1 trong 3 giá trị.
Đó là lý do tại sao bạn sẽ sử dụng IN.
Một cách khác để xem xét nó sẽ là sử dụng OR, nhưng điều đó thực sự dài dòng.