Le secret est de rejoindre tbl_equipwarranty deux fois - en utilisant 2 alias différents. Un pour la garantie de service et un pour la garantie du produit. Vous pouvez le faire en spécifiant le type de service dans le cadre de la jointure. Ce qui suit utilise les jointures ANSI et fonctionnera donc probablement dans firebird et mysql :
SELECT
a.equipmentid,
a.codename,
a.name,
a.labelid,
a.ACQUISITIONDATE,
a.description,
a.partofid,
w1.warrantyid as serviceidwarranty,
w1.startdate,
w1.enddate,
w2.warrantyid as productidwarranty,
w2.startdate,
w2.enddate
FROM TBL_EQUIPMENTMST a
INNER JOIN tbl_equipwarranty w1
ON w1.equipmentid = a.equipmentid AND w1.servicetype = 'service'
INNER JOIN tbl_equipwarranty w2
ON w2.equipmentid = a.equipmentid AND w2.servicetype = 'Product'
WHERE
a.partofid = '57'