Que diriez-vous d'utiliser IN à la place
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`;
La raison pour laquelle aucune valeur n'est renvoyée est due à cette section
AND `family` = 'Software_1Y'
AND `family = 'XI_1Y'
AND `family` = 'PI_1Y'
family
ne peut pas être les 3 valeurs à la fois, mais il peut s'agir de l'une des 3 valeurs.
C'est pourquoi vous utiliseriez IN.
Une autre façon de voir les choses serait d'utiliser OU, mais cela devient très long.