PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e 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, abr., 06 2021 10:26 AM - 5 respostas
Membro registado
43 mensagems
Popularité : +1 (3 votes)
Publicado em abril, 06 2021 - 10:26 AM
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 em abril, 13 2021 - 2:16 PM
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/
Membro registado
43 mensagems
Popularité : +1 (3 votes)
Publicado em abril, 14 2021 - 8:34 AM
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 em abril, 15 2021 - 12:37 PM
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
);
Membro registado
43 mensagems
Popularité : +1 (3 votes)
Publicado em abril, 15 2021 - 3:01 PM
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)
Membro registado
3 mensagems
Publicado em agosto, 23 2022 - 8:54 AM
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.