IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

automatiser création grand nombre ligne


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 33
    Points : 20
    Points
    20
    Par défaut automatiser création grand nombre ligne
    Bonjour,

    Je suis en train de mettre en place une boutique en ligne. Je dois "relier" les déclinaisons (taille, conditionnement,...) au produit concerné.

    Je dois donc ajouter 5 lignes pour un même produit. Le code sql est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO `grimaud_2`.`jos_vm_product_attribute` 
    (`product_id`, `attribute_name`, `attribute_value`) 
    VALUES ('893', 'product_list', 'YM'), ('893', 'product_list_child', ''), ('893', 'vm_list_header', 'Y'), 
    ('893', 'vm_quantity_box', 'normal,0,0,1'), ('893', 'vm_use_parent', 'N')
    Pour compliquer la chose, je ne connais pas directement le product_id (ici 893). En revanche, je connais, dans une autre table, un champ qui permet de déterminer ce product_id. Le code pour connaitre la correspondance est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT `product_id` , `product_sku`
    FROM `jos_vm_product`
    WHERE `product_sku` = "FT4"
    Ainsi, je dispose de la référence FT4; la seconde requette me permet de connaitre le product_id. Ensuite, je dois créer 5 lignes par le biais de la 1ere requete.

    PS, sur la 1ere requete, le contenu de attribute_name et attribute_value ne change jamais

    Mon problème est que j'ai plus de 1.000 produits à convertir ainsi.... faire la manip à la main n'est pas imaginable.... sauriez vous comment automatiser cela??

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 283
    Points : 11 742
    Points
    11 742
    Par défaut
    Si je résume, pour chaque produit (ou pour chaque produit en FT4 ?), tu veux créer 5 attributs identiques ?

    Commence par créer une table contenant ces 5 attributs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table Attr5(attribute_name varchar(30), attribute_value varchar(30)) ;
     
    insert into Attr5
    Values
    ('product_list', 'YM'),
    ('product_list_child', ''), 
    ('vm_list_header', 'Y'), 
    ('vm_quantity_box', 'normal,0,0,1'),
    ('vm_use_parent', 'N') ;
    Ensuite, tu n'as plus qu'à faire un INSERT... SELECT avec un produit cartésien entre jos_vm_product et Attr5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO `grimaud_2`.`jos_vm_product_attribute` 
    (`product_id`, `attribute_name`, `attribute_value`)
    SELECT P.product_id, A.attribute_name, A.attribute_value
    FROM jos_vm_product P CROSS JOIN Attr5 A
    -- si tu veux limiter aux produits en FT4
    WHERE P.product_sku = 'FT4' ;
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    merci pour ta réponse mais je me suis peut etre mal exprimé : je n'ai pas besoin de créer de table car les produits et les attributs sont déja créés : je n'ai plus qu'à indiquer au produit qu'un (ou des) attribut existe.

    POur ce faire, il me faut juste créer dans la table 'jos_vm_product_attribute' une série de 5 enregistrements. Ces éléments sont toujours les memes quelquesoit le produit hormis le 'product_id' qui est la clé primaire de la table 'jos_vm_product'.

    Pour identifier le product_id, je lance la seconde requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT `product_id` , `product_sku` 
    FROM `jos_vm_product` WHERE `product_sku` = "FT4"
    Dis moi si ca n'est pas encore asez clair, j'essaierai d'être plus clair encore.

    EN tout cas un grand merci car ce problème est véritablement bloquant pour moi

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    PS, FT4 est la réference du produit de l'exemple (product_sku qui se trouve dans jos_vm_product)

    893 est la clé primaire qui désigne le référence ci dessus (product_id présent dans les deux tables : jos_vm_product et jos_vm_product_attribute)

    La clé primaire (893 - product_id) est génerée automatiquement lorsque je créé un produit. Mes produits disposent d'une référence (FT4 - product_sku)

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    peut etre qu'un schéma sera plus simple pour comprendre :

    voici la table jos_vm_product ou j'ai en ma possession les product_sku pour lesquels il faut agir ensuite. Il s'agit d'identifier le product_id correspondant.


    Ensuite, pour le product_id que l'on déterminé à l'étape précédente, il faut ajouter les enregistrements suivants sur la table jos_vm_product_attribute :


    La table jos_vm_product_attribute est ainsi :


    J'espère que je me suis mieux exprimé ainsi

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 283
    Points : 11 742
    Points
    11 742
    Par défaut
    je sais que tu n'as pas besoin de Attr5 dans ton modèle de données. Cette table n'est qu'un moyen d'obtenir ce que tu veux (tes 5 attributs répétés produit par produit). Tu pourras ensuite la supprimer.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2000] Meilleure méthode pour insérer un grand nombre de lignes
    Par nicodev24 dans le forum Développement
    Réponses: 11
    Dernier message: 31/10/2016, 11h25
  2. [BO XI R2] Création d'un très grand nombre d'utilisateurs
    Par iuchiban dans le forum Administration-Migration
    Réponses: 14
    Dernier message: 04/02/2008, 15h36
  3. Macro Solver pour un grand nombre de ligne
    Par hochimi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/07/2007, 23h20
  4. Réponses: 4
    Dernier message: 03/02/2007, 21h27
  5. vue récupérant un grand nombre de lignes
    Par pointe dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/12/2006, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo