2013-07-26 3 views
8

J'essaie d'effectuer une mise à jour relationnelle en utilisant une jointure innjer et je n'arrive pas à obtenir la syntaxe correcte.Mise à jour de jointure interne de MySQL

Les lignes sont les suivantes:

Catalogue.Category_ID 
Catalogue.Visible 

Categories.Category_ID 
Categories.Category_Name 

Je suis en train de mettre à jour la valeur du champ visible lorsque la catégorie des numéros d'identification et correspondance correspondent au nom correct. Toutes mes excuses s'il s'agit d'une erreur de syntaxe stupide, je ne suis pas le plus expérimenté avec les bases de données relationnelles.

Répondre

17

Je crois que c'est la syntaxe correcte:

UPDATE `Catalogue` 
INNER JOIN `Categories` 
    ON Catalogue.Category_ID = Categories.Category_ID 
    AND Categories.Category_Name = 'Bases' 
SET `Visible` = '0' 
+0

Génial! N'a pas eu à lutter pour comprendre celui-là. Merci mon pote. – racl101

3

Vous utilisez la syntaxe TSQL, voici pour MySQL

UPDATE `Catalogue` 
     INNER JOIN `Categories` 
      ON Catalogue.Category_ID = Categories.Category_ID 

SET `Visible` = '0' 
WHERE Categories.Category_Name = 'Bases' 

si vous souhaitez raccourcir la requête, utilisez ALIAS

UPDATE Catalogue a 
     INNER JOIN Categories b 
      ON a.Category_ID = b.Category_ID 

SET Visible = '0' 
WHERE b.Category_Name = 'Bases' 
1

Je crois que vous recherchez:

UPDATE 'Catalogue' SET 'Visible' = '0' FROM 'Catalogue' INNER JOIN 'Categories' ON Catalogue.Category_ID = Categories.Category_ID 
WHERE Categories.Category_NAME = 'Bases' 
Questions connexes