Bonjour,
Je souhaite récupérer le maximum entre 2 valeurs contenues dans 2 tables différentes via SQL pour un même identifiant.
J'ai regardé les cours SQL mais je ne vois pas la solution à mon problème.
Je suis sous ORACLE.
Merci d'avance.
Julien.
Bonjour,
Je souhaite récupérer le maximum entre 2 valeurs contenues dans 2 tables différentes via SQL pour un même identifiant.
J'ai regardé les cours SQL mais je ne vois pas la solution à mon problème.
Je suis sous ORACLE.
Merci d'avance.
Julien.
Solution barbare peut être mais ca va marcher
Fait deux requêtes séparer avec union puis un max sur le champ.
Avec un exemple ca serra plus simple
2ème solution: Il me semble que la fonction GREATEST existe sous oracle aussi, en tout cas sous Mysql cela fonctionne très bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT MAX(champ) FROM ( SELECT champ1 as 'champ' FROM table1 UNION SELECT champ2 FROM table2 )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT MAX(GREATEST(champ1 , champ2)) FROM ( SELECT 1 as champ1 UNION ALL SELECT 2 )TABLE1, ( SELECT 3 as champ2 UNION ALL SELECT 2 )TABLE2
En fait, je cherche à faire quelque chose comme cela sous Oracle mais cela ne fonctionne pas:
Julien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select max (table1.a,table2.b), table1.id where table1.id = table2.id
As-tu essayé ma solution?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT max (GREATEST(table1.a,table2.b)), table1.id WHERE table1.id = table2.id
Bonjour,
La solution de david55 avec GREATEST est bonne dans ce cas, mais il faut à mon avis enlever le max(), sinon tu n'aura qu'une valeur : la plus grande des 2 valeurs entre la valeur maxi de la colonne b et la valeur maxi de la colonne a, mais je ne crois pas que c'est ce que tu veux.
Si tu veux utiliser autre chose que greatest , ce qui permet de faire d'autres type de comparaisons que le max, le mieux est d'utilisersous Oracle qui permet de faire un if then else comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part case when
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 -- Sous Oracle SELECT CASE WHEN table1.a >= table2.b THEN table1.a ELSE table2.b END,table1.id FROM table1, table2 WHERE table1.id = table2.id
Partager