Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté

 Bas   Précédent   Suivant  Le sujet est verrouillé



Wiliwilliam
SQL UPDATE avec des colonnes de deux tables différentes
 1  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 30116
Karma: 8617
J'aimerais update la colonne "COLa" d'une table "A" en fonction d'une colonne "COLb" de la table "B", les deux tables sont dans la même base.

j'ai fait
UPDATE A SET A.COLa=B.COLb WHERE A.COLa!=B.COLb;

L'idée étant de garder COLa identique à COLb en cas de changement.

nada, s'est rien passé et m'a dit que la clause WHERE => B.COLb n'existe pas
J'ai chié, mais où?

NB: les COLa sont uniques mais j'ai aussi une colonne commune avec un ID unique (IDa, IDb) et identique entre chaque table donc j'ai testé ça:
UPDATE A SET A.COLa=B.COLb WHERE A.IDa=B.IDb and A.COLa!=B.COLb;

mais c'est le même délire, il ne comprend pas la close WHERE qui provient de la table qui n'est pas update

Contribution le : 12/07/2018 14:44
_________________
Signaler

Koreus
 0  #2
Webhamster
Inscrit: 03/07/2002 23:58
Post(s): 65261
Karma: 27794
Il te manque une clause dans ton WHERE non ?
Je suppose que tes deux tables ont plusieurs lignes.
Comment il peut savoir quel COLb il doit prendre parmi toutes les lignes de B

Edit : je viens de voir ta deuxième requête, essaie peut-être d'afficher les valeurs COLb et COLa avec un SELECT pour voir si ton WHERE est bien construit

Edit2 : et cette requête marche ?
UPDATE A SET A.COLa=B.COLb WHERE A.IDa=B.IDb

Contribution le : 12/07/2018 17:33
_________________
Signaler

Wiliwilliam
 0  #3
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 30116
Karma: 8617
@Koreus
Champ 'B.ID.b' inconnu dans where clause.
Bon de toute façon j'ai contourné le problème en comparant les deux colonnes en PHP quand COLa et COLb sont chargées dans une $_SESSION.
Mais j'avoue que je serai curieux de comprendre comment ça marche.

Contribution le : 12/07/2018 18:02
_________________
Signaler

Koreus
 0  #4
Webhamster
Inscrit: 03/07/2002 23:58
Post(s): 65261
Karma: 27794
@Wiliwilliam B.ID.b, y a pas un point de trop ?

Contribution le : 12/07/2018 18:31
_________________
Signaler

Wiliwilliam
 0  #5
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 30116
Karma: 8617
faute de frappe dans le message 😉 non c'est pas ça le soucis

Contribution le : 12/07/2018 18:35
_________________
Signaler

Cornflake
 1  #6
Je masterise !
Inscrit: 29/04/2008 21:35
Post(s): 2544
Karma: 927
Manque pas un FROM ?

Contribution le : 12/07/2018 18:50
_________________
ZA WARUDO !
Signaler

CrazyCow
 2  #7
Koreus Addict
Inscrit: 29/07/2008 00:26
Post(s): 13763
Karma: 16248
Citation :

@Cornflake a écrit:
Manque pas un FROM ?


Si je pense.

Quand tu utilises un UPDATE sur plusieurs tables, il faut formuler la requête comme ça :

UPDATE A
    SET A.NAME = B.NAME
FROM TableNameA A, TableNameB B
WHERE A.ID = B.ID

Contribution le : 12/07/2018 18:59
_________________
Proverbe africain : Quand on est dans la merde jusqu'au cou, il faut savoir marcher la tête haute.
Signaler

-Flo-
 1  #8
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 10957
Karma: 3296
Non, pas de FROM dans un UPDATE, les tables sont ciblées directement par l'UPDATE lui-même.

Dans ton exemple c'est donc UPDATE A INNER JOIN B ON A.IDa = B.IDb SET A.COLa=B.COLb WHERE A.COLa!=B.COLb

Contribution le : 12/07/2018 21:33
_________________
Signaler

Wiliwilliam
 0  #9
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 30116
Karma: 8617
Le from ne marche pas.

@-Flo- niquel, ça a parfaitement bien marché. ('faudrait que je liste le nombre de topic où tu m'as sorti de la galère)

Merci à tous, pour vos suggestions! J'ai encore appris tout un tas de choses!

Contribution le : 13/07/2018 16:57
_________________
Signaler

CrazyCow
 1  #10
Koreus Addict
Inscrit: 29/07/2008 00:26
Post(s): 13763
Karma: 16248
Je pensais que c'était une requête pour SQL Server, mais c'est pour MySQL si je comprends bien.

Contribution le : 13/07/2018 17:09
_________________
Proverbe africain : Quand on est dans la merde jusqu'au cou, il faut savoir marcher la tête haute.
Signaler

Wiliwilliam
 1  #11
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 30116
Karma: 8617
@CrazyCow oui dsl, j'ai oublié de le préciser.

Contribution le : 13/07/2018 17:18
_________________
Signaler


 Haut   Précédent   Suivant

 Le sujet est verrouillé 





Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.