SQL squash rows returned when joining several tables
Something like

WITH BN AS (SELECT id, 
                   item_id, 
                   ROW_NUMBER() OVER (PARTITION BY item_id ORDER BY id) rn 
            FROM B),
     CN AS (SELECT id, 
                   item_id, 
                   ROW_NUMBER() OVER (PARTITION BY item_id ORDER BY id) rn 
            FROM C)
SELECT A.id, BC.id1, BC.id2
FROM A
LEFT JOIN (SELECT BN.item_id item_id, BN.id id1, CN.id id2
           FROM BN 
           FULL OUTER JOIN CN ON BN.item_id = CN.item_id
                             AND BN.rn = CN.rn ) BC ON A.id = BC.item_id