OVH Cloud OVH Cloud

Pb sur INNER JOIN

7 réponses
Avatar
mml
Bonjour,

Le code suivant :

UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
[dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)


me donne : l'erreur :

Syntaxe incorrecte vers le mot clé 'INNER'.

Quelqu'un voit-il la raison ?

--
Cordialement,

Marc LAGARDETTE

7 réponses

Avatar
Gilles
INNER JOIN Dans un Update je n'ai jamais osé mais ça marche peut être ..!!
A vérifier !
De plus ton update concerne l'entete et ton SET fait colonne de ligne =
colonne entete !!!

Je pencherais plus vers ceci
UPDATE [dbo.F_DOCENTETE] SET [dbo.F_DOCENTETE].[DE_No] = (SELECT [dbo.F_DOCLIGNE].[DE_NO] FROM [dbo.F_DOCLIGNE] WHERE
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] ) WHERE
([dbo.F_DOCENTETE].[DO_Domaine]=1)



"mml" a écrit dans le message de news:

Bonjour,

Le code suivant :

UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
[dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)


me donne : l'erreur :

Syntaxe incorrecte vers le mot clé 'INNER'.

Quelqu'un voit-il la raison ?

--
Cordialement,

Marc LAGARDETTE




Avatar
Patrice
Pour SQL Server, le UPDATE est suivi du nom de la table à mettre à jour et
la jointure est dans une clause FROM normale.

Cela donnerait donc quelque chose comme :

UPDATE <Table> SET <Affectations> FROM <Table> INNER JOIN <Autre table> ON
<condition de jointure>. WHERE <Conditions de sélection>

Patrice

--

"mml" a écrit dans le message de
news:
Bonjour,

Le code suivant :

UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
[dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)


me donne : l'erreur :

Syntaxe incorrecte vers le mot clé 'INNER'.

Quelqu'un voit-il la raison ?

--
Cordialement,

Marc LAGARDETTE




Avatar
bruno reiter [MVP]
la syntaxe n'est pas bonne ce serait :

UPDATE dbo.F_DOCENTETE
SET dbo.F_DOCLIGNE.[DE_No] = dbo.F_DOCENTETE.[DE_NO]
FROM dbo.F_DOCENTETE
INNER JOIN dbo.F_DOCLIGNE ON
dbo.F_DOCENTETE.[DO_Piece] = dbo.F_DOCLIGNE.[DO_Piece] WHERE
(dbo.F_DOCENTETE.[DO_Domaine]=1)


br

"mml" wrote in message
news:
Bonjour,

Le code suivant :

UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
[dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)


me donne : l'erreur :

Syntaxe incorrecte vers le mot clé 'INNER'.

Quelqu'un voit-il la raison ?

--
Cordialement,

Marc LAGARDETTE




Avatar
bruno reiter [MVP]
oups, c'est l'autre table que tu modifies, j'ai l'impression :

UPDATE dbo.F_DOCLIGNE
SET dbo.F_DOCLIGNE.[DE_No] = dbo.F_DOCENTETE.[DE_NO]
FROM dbo.F_DOCLIGNE
INNER JOIN dbo.F_DOCENTETEON
dbo.F_DOCENTETE.[DO_Piece] = dbo.F_DOCLIGNE.[DO_Piece]
WHERE (dbo.F_DOCENTETE.[DO_Domaine]=1)

br

"mml" wrote in message
news:
Bonjour,

Le code suivant :

UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
[dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)


me donne : l'erreur :

Syntaxe incorrecte vers le mot clé 'INNER'.

Quelqu'un voit-il la raison ?

--
Cordialement,

Marc LAGARDETTE




Avatar
mml
Bingo ! C'est bien cette structure qui m'a sauvé.
Merci beaucoup.

"Patrice" a écrit dans le message de
news:
Pour SQL Server, le UPDATE est suivi du nom de la table à mettre à jour et
la jointure est dans une clause FROM normale.

Cela donnerait donc quelque chose comme :

UPDATE <Table> SET <Affectations> FROM <Table> INNER JOIN <Autre table>


ON
<condition de jointure>. WHERE <Conditions de sélection>

Patrice

--

"mml" a écrit dans le message de
news:
> Bonjour,
>
> Le code suivant :
>
> UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
> [dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
> [dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
> WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)
>
>
> me donne : l'erreur :
>
> Syntaxe incorrecte vers le mot clé 'INNER'.
>
> Quelqu'un voit-il la raison ?
>
> --
> Cordialement,
>
> Marc LAGARDETTE
>
>




Avatar
mml
Merci beaucoup pour cette aide.
Pour mon cas, c'est plutôt la méthode de Patrice qui a marché.
Je ne peux pas dire si la tienne pourrait jouer car je n'ai pas abouti avec
elle.
Merci encore.


"Gilles" a écrit dans le message de
news:
INNER JOIN Dans un Update je n'ai jamais osé mais ça marche peut être


..!!
A vérifier !
De plus ton update concerne l'entete et ton SET fait colonne de ligne > colonne entete !!!

Je pencherais plus vers ceci
UPDATE [dbo.F_DOCENTETE] SET [dbo.F_DOCENTETE].[DE_No] > = (SELECT [dbo.F_DOCLIGNE].[DE_NO] FROM [dbo.F_DOCLIGNE] WHERE
[dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] ) WHERE
([dbo.F_DOCENTETE].[DO_Domaine]=1)



"mml" a écrit dans le message de news:

> Bonjour,
>
> Le code suivant :
>
> UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
> [dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
> [dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
> WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)
>
>
> me donne : l'erreur :
>
> Syntaxe incorrecte vers le mot clé 'INNER'.
>
> Quelqu'un voit-il la raison ?
>
> --
> Cordialement,
>
> Marc LAGARDETTE
>
>




Avatar
mml
OK, tout à fait d'accord, ça marche.
Merci bien

"bruno reiter [MVP]" <remove.this! a écrit dans le message
de news:
oups, c'est l'autre table que tu modifies, j'ai l'impression :

UPDATE dbo.F_DOCLIGNE
SET dbo.F_DOCLIGNE.[DE_No] = dbo.F_DOCENTETE.[DE_NO]
FROM dbo.F_DOCLIGNE
INNER JOIN dbo.F_DOCENTETEON
dbo.F_DOCENTETE.[DO_Piece] = dbo.F_DOCLIGNE.[DO_Piece]
WHERE (dbo.F_DOCENTETE.[DO_Domaine]=1)

br

"mml" wrote in message
news:
> Bonjour,
>
> Le code suivant :
>
> UPDATE [dbo.F_DOCENTETE] INNER JOIN [dbo.F_DOCLIGNE] ON
> [dbo.F_DOCENTETE].[DO_Piece] = [dbo.F_DOCLIGNE].[DO_Piece] SET
> [dbo.F_DOCLIGNE].[DE_No] = [dbo.F_DOCENTETE].[DE_NO]
> WHERE ([dbo.F_DOCENTETE].[DO_Domaine]=1)
>
>
> me donne : l'erreur :
>
> Syntaxe incorrecte vers le mot clé 'INNER'.
>
> Quelqu'un voit-il la raison ?
>
> --
> Cordialement,
>
> Marc LAGARDETTE
>
>