bonjour,

Voici une requête sql un peu difficile à comprendre, car je ne comprends pas la clause When et les différentes jointures, du fait que j'ai appris sql sous Oracle.

Pouvez vous m'aider à la comprendre.

Je ne comprends pas le signe >= de la clause When.

Merci beaucoup à vous, car je bute sur cette requête depuis quelque temps sans en comprendre le sens vraiment.

Bien cordialement.

Nathalie

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT     dbo.MICROTHESAURUS.ID_TERME_SOURCE,          dbo.TERMES.Lib_TERME,
 CASE WHEN ISNULL(d .id_micro_thesaurus, 0) >= microthesaurus.id_micro_thesaurus THEN ISNULL(d .id_micro_thesaurus, 0) 
ELSE microthesaurus.id_micro_thesaurus END AS id_micro_thesaurus,

 dbo.GENERIQUES.ID_TERME_GENERIQUE, dbo.MICROTHESAURUS.ID_MICRO_THESAURUS AS bad_id_microthesaurus, 
 dbo.MICROTHESAURUS.ID_THES
FROM         dbo.MICROTHESAURUS INNER JOIN dbo.TERMES ON dbo.MICROTHESAURUS.ID_TERME_SOURCE = dbo.TERMES.ID_TERME 
				INNER JOIN dbo.GENERIQUES ON dbo.GENERIQUES.ID_TERME_SOURCE_G = dbo.TERMES.ID_TERME 
				LEFT OUTER JOIN dbo.MICROTHESAURUS d ON d .ID_TERME_SOURCE = dbo.GENERIQUES.ID_TERME_GENERIQUE
J'ai besoin que cette requête exprime que s'il y a une correspondance avec la table MICROTHESAURUs alors id_micro_thesaurus a une valeur, sinon, la valeur de id_micro_thesaurs est 'NULL'