PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → Reports & Queries → Deux bases de données SQL Server avec même nom de table problème de correlation
Deux bases de données SQL Server avec même nom de table problème de correlation
Iniciado por Jean-Marc NAHON, 06,abr. 2021 09:26 - 5 respuestas
Miembro registrado
43 mensajes
Popularité : +1 (3 votes)
Publicado el 06,abril 2021 - 09:26
Bonjour,

j'ai deux bases de données SQLserver qui ont des tables avec des structures différentes mais qui ont le même nom. J'ai renommé dans windev l'une deux deux afin d'avoir dans l'analyse les deux tables. J'utilise l'accès Natif SQLServer de Windev pour l'accès à ces deux bases de données.

Lorsque j'exécute cette requête

SELECT
Gisement_Tracabilite.Numero AS Numero,
Gisement_Tracabilite.Id AS Id,
Gisement.N_Code_GIS AS N_Code_GIS
FROM
Gisement_Tracabilite,
Gisement
WHERE
Gisement.T_GIS_Numero= Gisement_Tracabilite.Numero


j'ai une erreur 117
avec l'explication suivante :
Description : les objets "dbo.gisement" et "dbo.gisement" dans la clause FROM ont les mêmes noms exposés. Utilisez des noms de corrélation pour les distinguer.

SELECT ([dbo].[Gisement].[Numero] AS [Numero], [dbo].[Gisement].[Id] AS [Id] FROM [dbo].[Gisement] WITH (NOLOCK), [dbo].[Gisement] WITH (NOLOCK) WHERE ([dbo].[Gisement].[T_GIS_numero] = [dbo].[Gisement].[Numero] ) ORDER BY 2


Je voudrais éviter de renommer une des tables dans mes bases de données.

En attente de vos idées ;-)

--
Jean-Marc NAHON (Gestform)
Publicado el 13,abril 2021 - 13:16
Jean-Marc NAHON escribío:
Bonjour,

j'ai deux bases de données SQLserver qui ont des tables avec des structures différentes mais qui ont le même nom. J'ai renommé dans windev l'une deux deux afin d'avoir dans l'analyse les deux tables. J'utilise l'accès Natif SQLServer de Windev pour l'accès à ces deux bases de données.

Lorsque j'exécute cette requête

SELECT
Gisement_Tracabilite.Numero AS Numero,
Gisement_Tracabilite.Id AS Id,
Gisement.N_Code_GIS AS N_Code_GIS
FROM
Gisement_Tracabilite,
Gisement
WHERE
Gisement.T_GIS_Numero= Gisement_Tracabilite.Numero


j'ai une erreur 117
avec l'explication suivante :
Description : les objets "dbo.gisement" et "dbo.gisement" dans la clause FROM ont les mêmes noms exposés. Utilisez des noms de corrélation pour les distinguer.

SELECT ([dbo].[Gisement].[Numero] AS [Numero], [dbo].[Gisement].[Id] AS [Id] FROM [dbo].[Gisement] WITH (NOLOCK), [dbo].[Gisement] WITH (NOLOCK) WHERE ([dbo].[Gisement].[T_GIS_numero] = [dbo].[Gisement].[Numero] ) ORDER BY 2


Je voudrais éviter de renommer une des tables dans mes bases de données.

En attente de vos idées ;-)

--
Jean-Marc NAHON (Gestform)


In the SQL Standards, the vernacular 'table alias' is referred to as a correlation name and the vernacular 'column alias' is referred to as an as clause. It seems you have the two terms confused.

https://www.prepaidgiftbalance.vip/
Miembro registrado
43 mensajes
Popularité : +1 (3 votes)
Publicado el 14,abril 2021 - 07:34
Bonjour,

merci pour votre réponse.
En fait j'ai trouvé la solution en effectuant simplement ceci
SELECT GT.Numero AS Numero, GT.Id AS Id, G.N_Code_GIS AS N_Code_GIS
FROM Gisement_Tracabilite AS GT, Gisement AS G
WHERE GT_GIS_Numero= GT.Numero


--
Jean-Marc NAHON (Gestform)
Publicado el 15,abril 2021 - 11:37
Jean-Marc NAHON escribío:
Bonjour,

j'ai deux bases de données SQLserver qui ont des tables avec des structures différentes mais qui ont le même nom. J'ai renommé dans windev l'une deux deux afin d'avoir dans l'analyse les deux tables. J'utilise l'accès Natif SQLServer de Windev pour l'accès à ces deux bases de données.

Lorsque j'exécute cette requête

SELECT
Gisement_Tracabilite.Numero AS Numero,https://www.mcdvoice.ltd/
Gisement_Tracabilite.Id AS Id,
Gisement.N_Code_GIS AS N_Code_GIS
FROM
Gisement_Tracabilite,
Gisement
WHERE
Gisement.T_GIS_Numero= Gisement_Tracabilite.Numero


j'ai une erreur 117
avec l'explication suivante :
Description : les objets "dbo.gisement" et "dbo.gisement" dans la clause FROM ont les mêmes noms exposés. Utilisez des noms de corrélation pour les distinguer.

SELECT ([dbo].[Gisement].[Numero] AS [Numero], [dbo].[Gisement].[Id] AS [Id] FROM [dbo].[Gisement] WITH (NOLOCK), [dbo].[Gisement] WITH (NOLOCK) WHERE ([dbo].[Gisement].[T_GIS_numero] = [dbo].[Gisement].[Numero] ) ORDER BY 2


Je voudrais éviter de renommer une des tables dans mes bases de données.

En attente de vos idées ;-)

--
Jean-Marc NAHON (Gestform)


Do not use correlation. At your example you are basically comparing employees salary with average salary (of the same person where s.no=d.no).

For instance for employee no = 1 you got:

WHERE 3000 > (3000) -- false no record returned
You probably want to pick employees which salary is higher than average of all employees. In that case use:

select no, name, salary
from emp
where salary > (
select AVG(salary)
from emp d
);
Miembro registrado
43 mensajes
Popularité : +1 (3 votes)
Publicado el 15,abril 2021 - 14:01
Bonjour,

Je voulais simplement faire une jointure simple, simplement comme les tables ont le même nom, sql Server refusé. Mais j'ai trouvé une solution ;-)

Cordialement

--
Jean-Marc NAHON (Gestform)
Miembro registrado
3 mensajes
Publicado el 23,agosto 2022 - 07:54
In the SQL Standards, the vernacular 'table alias' is referred to as a correlation name and the vernacular 'column alias' is referred to as an as clause. It seems you have the two terms confused.