DECODE c'est une fonction Oracle qui fait :
DECODE(a, b1, c1, b2, c2, ..., d)
équivaut à :
si a = b1, alors renvoie c1,
si a = b2, alors renvoie c2,
...,
sinon renvoie d.
On peut le faire avec un CASE également :
CASE Y.ID IS NULL THEN 0 ELSE 1 END CASE
edit : avec UNION, on peut faire ça par exemple :
Code :
- SELECT X.NOM, X.PRENOMS, COUNT(*) AS NB
- FROM R1 X, R2 Y
- WHERE Y.ID = X.ID
- GROUP BY X.NOM, X.PRENOMS
- UNION ALL
- SELECT X.NOM, X.PRENOMS, 0 AS NB
- FROM R1
- WHERE NOT EXISTS
- (SELECT 1 FROM R2 Y WHERE Y.ID = X.ID)
- ORDER BY NB DESC, X.NOM, X.PRENOMS;
|
mais ça revient à faire une union + une jointure externe (car le NOT EXISTS c'est grosso modo une jointure externe).
Message édité par Beegee le 11-06-2006 à 12:56:21