J'ai la requête suivantemise à jour d'une table en joignant plusieurs tables
SELECT e.topicShortName, d.catalogFileID, e.topicID
FROM catalog_topics a
LEFT JOIN catalog_files_join b ON a.catalogID = b.foreignKey
LEFT JOIN catalog_files_join c ON c.foreignKey = b.catalogFileID
LEFT JOIN catalog_files d ON d.catalogFileID = b.catalogFileID
LEFT JOIN catalog_lu_topics e ON a.topicID = e.topicID
WHERE b.fileTypeID = 'gvl401'
AND c.fileTypeID = 'gvl25'
AND e.parentID = 'top305'
AND a.sortorder =1
AND e.topicID = 'top318'
qui me va chercher une ligne de données:
topicShortName catalogFileID topicID
Welcoming cfil960 top318
Je veux exécuter une instruction de mise à jour afin que je puisse mettre à jour catalogFileID
à 'cfil123'. Je le topicID
avec moi, il est « top318 »
catalogFileID
appartient à catalog_files
Je ne peux pas semble envelopper ma tête autour de la déclaration de mise à jour qui permettra d'atteindre ce ..
Je ne rechignent pas à faire plusieurs mises à jour. Mais après les instructions de mise à jour, la requête select ci-dessus devrait renvoyer cfil123. Mais je ne peux pas simplement mettre à jour toutes les tables où catalogFileID est utilisé ..
CORRECT RÉPONSE:
UPDATE catalog_topics a
LEFT JOIN catalog_files_join b ON a.catalogID = b.foreignKey
LEFT JOIN catalog_files_join c ON c.foreignKey = b.catalogFileID
LEFT JOIN catalog_files d ON d.catalogFileID = b.catalogFileID
LEFT JOIN catalog_lu_topics e ON a.topicID = e.topicID
SET d.catalogFileID = 'Cfil123',
b.catalogFileID = 'Cfil123',
c.foreignKey = 'Cfil123'
WHERE b.fileTypeID = 'gvl401'
AND c.fileTypeID = 'gvl25'
AND e.parentID = 'top305'
AND a.sortorder =1
AND e.topicID = 'top318'
J'avais essayé exacly, mais ne pas mettre à jour b.catalogFileID. J'espère que votre réponse fonctionne mais votre requête me donne cette erreur (j'utilise MySQL): # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'WHERE b.fileTypeID =' gvl401 ' ET c.fileTypeID =' gvl25 ' ET e.parentID =' top 'à la ligne 8 –
oh nvmd vous avez eu une virgule supplémentaire –
damnit.Maintenant, il dit zéro lignes mises à jour :( –