Re: Erreur requête

Posté par Azertyuiop le 20/1/2006 8:37:03
En fait, j'avais déjà essayé cette requête (SQL Server la transforme automatiquement en

SELECT I.ID AS ID, S.HSS_Code AS HSS_Code, I.HasQualityImpact AS HasQualityImpact, I.SEQ AS SEQ, I.System AS System, I.Description AS Description,
I.Platform AS Platform, I.Soft AS Soft, I.InHouseDevelopment AS InHouseDevelopment, I.Location AS Location, C.Designation AS ControllingFunction,
I.QSR AS QSR, I.LinkedToSystem AS LinkedToSystem, I.LinkedToHardwareComponent AS LinkedToHardwareComponent,
I.LinkedToSoftwareComponent AS LinkedToSoftwareComponent, I.LinkedToDatabaseComponent AS LinkedToDatabaseComponent,
I.NotApplicableForDRP AS NotApplicableForDRP, P.ProviderName AS ProviderName, I.HasERESImpact AS HasERESImpact
FROM SYSTEM_CODE S INNER JOIN
INITIAL_INVENTORY I ON S.ID = I.SystemCodeID INNER JOIN
CONTROLLING_FUNCTION C ON I.ControllingFunctionID = C.ID INNER JOIN
PROVIDER P ON I.ProviderID = P.ID
ORDER BY S.HSS_Code, I.HasQualityImpact DESC, I.SEQ), mais sans le mot "LEFT", qui n'est de toutes façons pas accepté par Windev.

Le problème est qu'en fait, elle n'est pas équivalente à la requête initiale, en effet elle ne retourne aucun résultat ... et j'ai remarqué que la 2è requête que j'ai posté ne l'est pas non plus, en fait.

La requête initiale, non adaptée par SQL Server (la première que j'ai posté l'était) est :

SELECT INITIAL_INVENTORY.ID AS ID,
SYSTEM_CODE.HSS_Code AS HSS_Code,
INITIAL_INVENTORY.HasQualityImpact AS HasQualityImpact,
INITIAL_INVENTORY.SEQ AS SEQ,
INITIAL_INVENTORY.System AS System,
INITIAL_INVENTORY.Description AS Description,
INITIAL_INVENTORY.Platform AS Platform,
INITIAL_INVENTORY.Soft AS Soft,
INITIAL_INVENTORY.InHouseDevelopment AS InHouseDevelopment,
INITIAL_INVENTORY.Location AS Location,
CONTROLLING_FUNCTION.Designation AS ControllingFunction,
INITIAL_INVENTORY.QSR AS QSR,
INITIAL_INVENTORY.LinkedToSystem AS LinkedToSystem,
INITIAL_INVENTORY.LinkedToHardwareComponent AS LinkedToHardwareComponent,
INITIAL_INVENTORY.LinkedToSoftwareComponent AS LinkedToSoftwareComponent,
INITIAL_INVENTORY.LinkedToDatabaseComponent AS LinkedToDatabaseComponent,
INITIAL_INVENTORY.NotApplicableForDRP AS NotApplicableForDRP,
PROVIDER.ProviderName AS ProviderName,
INITIAL_INVENTORY.HasERESImpact AS HasERESImpact
FROM SYSTEM_CODE INNER JOIN INITIAL_INVENTORY ON SYSTEM_CODE.ID = INITIAL_INVENTORY.SystemCodeID,
CONTROLLING_FUNCTION INNER JOIN INITIAL_INVENTORY ON CONTROLLING_FUNCTION.ID = INITIAL_INVENTORY.ControllingFunctionID,
PROVIDER RIGHT OUTER JOIN INITIAL_INVENTORY ON PROVIDER.ID = INITIAL_INVENTORY.ProviderID
ORDER BY HSS_Code ASC, HasQualityImpact DESC, SEQ ASC

En gros, SQL Server remplace les virgules par des CROSS JOIN dans ce cas... ce qui est probablement la cause des résultats érronés, mais j'ai essayé beaucoup de possibilités sans savoir recréer les résultats de la requête initiale (tordue, je sais).

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=3393&post_id=14392