Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como combinar tabelas com relacionamento de 1 para muitos em 1 linha de registro


O segredo é entrar no tbl_equipwarranty duas vezes - usando 2 aliases diferentes. Um para a garantia do serviço e outro para a garantia do produto. Você pode fazer isso especificando o tipo de serviço como parte da junção. O seguinte usa junções ANSI, então provavelmente funcionará no firebird e no 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'