> Tech > Obtenir les bons totaux sur des jointures Many-to-Many

Obtenir les bons totaux sur des jointures Many-to-Many

Tech - Par iTPro - Publié le 24 juin 2010
email

Quand vous joignez deux tables qui ont une relation many-to-many (plusieurs à plusieurs), SQL joint toutes les lignes correspondantes de la première table à toutes les lignes correspondantes de la seconde. Pour résumer les valeurs provenant des deux tables, spécifiez un subselect sur le join.

Obtenir les bons totaux sur des jointures Many-to-Many

Par exemple, pour totaliser les quantités order et dispatch des items, au lieu de SELECT O.ITEM, SUM(O.QTY), SUM(D.QTY) FROM MONYLIB.ORDDTL O JOIN MONYLIB.DSPDTL D ON O.ITEM = D.ITEM GROUP BY O.ITEM codez plutôt : SELECT O.ITEM, SUM(O.QTY), MIN(D.DESPQTY) FROM ORDDTL O JOIN (SELECT ITEM, SUM(QTY) AS DESPQTY FROM DSPDTL GROUP BY ITEM) AS D ON O.ITEM = D.ITEM GROUP BY O.ITEM

Le subselect additionne la quantité dispatch comme DESPQTY et spécifie un nom de corrélation de D de telle sorte que les valeurs retournées par la sous-requête puissent être référencées dans la requête principale. La fonction MIN dans la requête extérieure (outer) garantit que DESPQTY n’est sorti qu’une fois pour chaque item.

– Julian Monypenny Rédacteur technique System iNEWS 

Téléchargez gratuitement cette ressource

IBMi et Cloud : Table ronde Digitale

IBMi et Cloud : Table ronde Digitale

Comment faire évoluer son patrimoine IBMi en le rendant Cloud compatible ? Comment capitaliser sur des bases saines pour un avenir serein ? Faites le point et partagez l'expertise Hardis Group et IBM aux côtés de Florence Devambez, DSI d'Albingia.

Tech - Par iTPro - Publié le 24 juin 2010