2009-10-02 13 views
0

J'utilise un INSERT .. SELECT pour 'dupliquer' les lignes d'une table (avec une clé étrangère différente).MYSQL Insérer .. Sélectionner - Plusieurs lignes et tables avec des clés étrangères?

Cela fonctionne très bien, mais il insère plusieurs lignes et je dois maintenant faire un autre INSERT pour insérer plusieurs lignes qui sont liées à chaque ligne dans le précédent SELECT ... cela a-t-il même un sens? Haha.

Fondamentalement, il existe une relation de un à plusieurs entre table1 et table2. Il existe une relation un à un entre table1 et table3. J'affecte des lignes de table1 (et de leurs lignes liées de table2) à une nouvelle ligne sur table3 (j'ai le mysql_insert_id pour celui-ci). J'essaye de le faire avec le moins de requêtes possible.

Je vais vous donner un exemple,


Vous avez une table products une table options et une table option_items. Chaque option a plusieurs option_items et chaque product peut avoir plusieurs options appliqués.

Product1 a l'option Colour qui lui est appliquée, et se compose des produits ColourBlue et Green, Product1 a également l'option qui lui est appliquée Size qui présente les éléments Small et Large. Je souhaite dupliquer le produit avec un nouvel ID, ce qui implique de dupliquer les lignes dans les tables options et option_items et de recréer leurs clés étrangères associées.

J'ai créé le nouveau produit et ai le productid.

Maintenant, je besoin de dupliquer les options obtenir l'ID du nouveau option, dupliquer les éléments et attribuer l'ID du nouveau option au items (maintenant la possibilité de relations d'article).

Toute aide serait grandement appréciée!

+0

non, n'a pas de sens. S'il vous plaît modifier et fournir des exemples de données. – longneck

+0

J'ai ajouté un exemple pour aider, je l'espère. – Joel

+0

S'il vous plaît ajouter le tableau DDL et exemples de requêtes (ceux que vous avez pu comprendre jusqu'à présent) afin que nous puissions visualiser ce que vous essayez de faire. Sinon, c'est trop difficile de répondre. –

Répondre

0

Désolé pour la question de la merde! J'ai fini par utiliser une boucle plutôt que des requêtes compliquées. Probablement pas la meilleure solution, mais de loin le plus simple :)

Merci d'avoir lu les gars.

Questions connexes