Vous ne voulez pas vraiment faire quelque chose comme un foreach. Ne pensez pas à SQL comme procédural, comme la plupart du code (où vous faites une chose, puis une seconde, et ainsi de suite). Vous devez penser à cela en fonction de l'ensemble, où avez-vous quelque chose à de grands morceaux qui répondent à certaines exigences. Quelque chose comme:
INSERT INTO term_nodes (tid, x, nid) -- these are the field names
<subquery that selects all the data>
Le sous-requête doit simplement sélectionner toutes les données que vous souhaitez insérer, peut-être quelque chose comme:
SELECT nodeId, 4, termId FROM nodes WHERE contentType = X
donc mettre tous ensemble, vous obtenez:
INSERT INTO term_nodes (tid, x, nid)
SELECT nodeId, 4, termId FROM nodes WHERE contentType = X
Pas besoin d'essayer de parcourir chaque élément de la sous-requête et de les insérer un à la fois, faites-le tout en même temps.
Voici un bon article que j'ai trouvé sur Procedural versus Set-Based SQL qui peut vous aider à mieux comprendre le concept.
Oui, mais comment faire pour chaque nœud d'un ensemble? –