2010-07-16 8 views
2

J'ai deux tables:Mettre à jour un ensemble de colonnes avec des critères basés sur une autre table?

TABLE_1 - ControlId, Code, ReportedDate, Âge FiledDate, AgeCategory, etc.,

TABLE_2 - ControlId, Code, ReportedDate, FiledDate etc.,

ControlID dans table_1 est clé étrangère alors que pas table_2. Je dois mettre à jour ReportedDate en table_1 avec ReportedDate dans table_2 et l'âge et AgeCatogory a été calculé et bien.

Je veux mettre à jour ces trois colonnes table_1, où ControlID, FiledDate et le code dans les deux sont identiques.

Maintenant Jusqu'à présent, je l'ai:

UPDATE table_1 SET ReportedDate=table_2.ReportedDate, Age='<value>' AgeCategory='<value>' 
     WHERE table_1.ControlID=table_2.ControlID AND 
     table_1.FiledDate=table_2.FiledDate AND table_1.Code=table_2.Code 

Si quelqu'un a l'idée de comment pourrait-il être résolu ???

Anyhelp serait apprécié ...

EDIT:

Je reçois une erreur de syntaxe MySQL disant erreur à 'FROM ...'

+0

Quel est exactement le problème? Les mauvaises données sont-elles mises à jour? Y a-t-il une erreur dans votre SQL? S'il vous plaît soyez plus concis. –

Répondre

0
UPDATE table_1 
    JOIN table_2 
    ON table_1.ControlID=table_2.ControlID 
     AND table_1.FiledDate=table_2.FiledDate 
     AND table_1.Code=table_2.Code 
    SET table_1.ReportedDate=table_2.ReportedDate, 
     table_1.Age='<value>', 
     table_1.AgeCategory='<value>'; 
0

Il n'y a pas de sont autorisés dans la syntaxe UPDATE 1:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name 
    SET col_name1=expr1 [, col_name2=expr2 ...] 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

Si vous aimez chercher le contenu d'une seconde table , vous pouvez utiliser une sous-requête.

Essayez ce code:

UPDATE table_1 SET ReportedDate= 
    (SELECT ReportedDate FROM table_2 
     WHERE table_1.ControlID = table_2.ControlID 
     AND table_1.Code = table_2.Code 
    ), Age='<value>' AgeCategory='<value>' 
+0

Thanx, je l'ai trouvé comme ça pour le même genre de problème dans notre « SO ». J'ai modifié la requête. La même erreur se produit. Est-ce que U peut m'aider à le réparer? Puis-je repérer de quel côté je devrais le modifier? – Venkat

+0

Je viens d'ajouter un peu de code. Je ne suis pas sûr, le temps ça marche, mais c'est ce que je pourrais essayer. – JochenJung

Questions connexes