2012-05-02 3 views
1

Je veux mettre à jour une table qui n'a que deux champs test_set_id et plan_id que je peux obtenir facilement de cette requêteComment mettre à jour des colonnes dans une table en les associant à 5 autres tables?

SELECT  tp.plan_id 
     , r.release_id 
FROM  test_plan tp 
     , releases r 
     , test_run tr 
     , iteration i 
WHERE  tr.iteration_id = i.iteration_id 
AND   i.release_id = r.release_id 
AND   tr.plan_id  = tp.plan_id 
AND   i.release_id = 1 
GROUP BY plan_id 

mais quand je lance la requête suivante, il me donne une erreur SQL.

UPDATE test_set_relation 
SET  test_set_id 
    , plan_id= 
     ( SELECT  tp.plan_id 
        , r.release_id 
      FROM  test_plan tp 
        , releases r 
        , test_run tr 
        , iteration i 
      WHERE  tr.iteration_id = i.iteration_id 
      AND   i.release_id = r.release_id 
      AND   tr.plan_id  = tp.plan_id 
      AND   i.release_id = 1 
      GROUP BY plan_id 
     ) 

Comment résoudre ce problème?

+0

Vous avez deux colonnes dans votre 'clause set':' SET test_set_id, plan_id' Lequel devrait-il être? –

+1

Quelles lignes/lignes voulez-vous mettre à jour dans 'test_set_relation'? Quelle est la relation entre la ligne que vous avez l'intention de mettre à jour et votre 'select'? –

+0

Aussi: voulez-vous mettre à jour une ligne ou plusieurs? –

Répondre

4

Vous ne pouvez pas affecter plusieurs valeurs de champ comme dans SET.

SET test_set_id,plan_id=(SELECT tp.plan_id,r.release_id 

Cela jette l'erreur Incorrect syntax near ','.(ce message d'erreur est de SQL Server) parce que la requête devrait avoir un opérateur d'affectation = à côté du nom de la colonne.

Votre requête devrait être formulé quelque chose le long de cette ligne. Sans savoir comment vos tables sont structurées, il n'est pas possible de formuler une instruction UPDATE valide.

Utilisation: SQL Server syntaxe

UPDATE  t1 
SET   t1.col2 = t2.col2 
     , t1.col3 = t2.col3 
FROM  table1 t1 
INNER JOIN table2 t2 
ON   t1.col1 = t2.col1 

Utilisation: MySQL syntaxe

UPDATE  table t1 
JOIN 
SET   t1.col2 = t2.col2 
     , t1.col3 = t2.col3 
INNER JOIN table2 t2 
ON   t1.col1 = t2.col1 
+0

Je ne suis pas sûr que la syntaxe fonctionne pour mysql – HLGEM

Questions connexes