SELECT bief_depart.b1 ,bief_depart.b2 ,bief.cle_externe AS 'code_bief' ,fanny_tonnage.code_chapitre ,sum(fanny_tonnage.cumul_tonne)AS tonnage FROM bief_depart JOIN bief ON bief_depart.b1=bief.id_bief JOIN fanny_tonnage ON (bief_depart.num_quai_depart=fanny_tonnage.num_quai_depart AND bief_depart.num_quai_arrive=fanny_tonnage.num_quai_arrive) WHERE IF (bief_depart.pk_b1=bief_depart.pk_b2 ,bief_depart.pk_b1=bief_depart.pk_b2 ,bief.pk_amont< IF( bief_depart.pk_b1 < bief_depart.pk_b2, bief_depart.pk_b2,bief_depart.pk_b1 ) and bief.pk_amont> IF( bief_depart.pk_b1 < bief_depart.pk_b2, bief_depart.pk_b1 ,bief_depart.pk_b2 ) ) AND IF (bief_depart.pk_b1=bief_depart.pk_b2 ,bief_depart.pk_b1=bief_depart.pk_b2 ,bief.pk_aval< IF( bief_depart.pk_b1 < bief_depart.pk_b2, bief_depart.pk_b2,bief_depart.pk_b1 ) and bief.pk_aval> IF( bief_depart.pk_b1 < bief_depart.pk_b2, bief_depart.pk_b1 ,bief_depart.pk_b2 ) ) GROUP BY fanny_tonnage.code_chapitre ,bief_depart.b1,bief_depart.b2,bief.cle_externe ORDER BY bief_depart.b1;