Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment combiner des tables avec une relation 1 à plusieurs en 1 ligne d'enregistrement

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'