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

Langage SQL Discussion :

Insérer des données à partir d'une autre table


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Insérer des données à partir d'une autre table
    Bonjour,

    J'aimerais ajouter dans une table un lien entre deux autres tables.
    Cette table a 2 colonnes: id_user et id_produit.
    J'aimerais donc pour un id_produit donné, ajouter autant de tuples que d'utilisateurs dans la base de données.

    Pour l'instant je pensais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id FROM users
    WHILE id
       INSERT id, id_produit
    Mais si j'ai 5000 utilisateurs, ça fait 5000 requêtes...

    Je pensais plus faire un truc comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT 
       colonne1 = SELECT * id_user FROM users
       colonne2 = id_produit
    Est-ce faisable?
    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    J'émets de grosse réserves quant à l'intérêt de faire ce que vous faites.

    Néanmoins, quelque chose comme ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO MaTable (id_user, id_produit)
    SELECT u.id_user
         , v_id_produit -- la valeur de votre id_produit
      FROM users u;

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Rien de ce que tu proposes n'est du SQL...
    Qu'utilises-tu comme langage ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Merci, je vais essayer, mais pouvez vous me dire pourquoi vous y mettez une réserve? Comment feriez-vous? Vous utiliseriez un enregistrement en concaténant les id plutôt que 5000 enregistrements?

    Merci

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Rien de ce que tu proposes n'est du SQL...
    Qu'utilises-tu comme langage ?
    Bonjour, c'était une manière d'écrire, j'utilise PHP + SQL.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Anduriel Voir le message
    Merci, je vais essayer, mais pouvez vous me dire pourquoi vous y mettez une réserve? Comment feriez-vous? Vous utiliseriez un enregistrement en concaténant les id plutôt que 5000 enregistrements?

    Merci
    Quel est l'intérêt d'associer chaque utilisateur à un produit ?
    Vas-tu faire la même chose pour tous les produits ?

    Autant faire un produit cartésien des utilisateurs et des produits et ne pas faire de table associative alors !

    Quelle est l'association du modèle conceptuel de données qui peut justifier ça ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    En fait je dois afficher une popup pour tous les utilisateurs. Chaque utilisateur peut fermer cette popup, et il faut retenir cette décision. Je ne vois pas comment faire autrement?

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Chaque utilisateur peut fermer cette popup, et il faut retenir cette décision
    Si la popup est ouverte par défaut et que tu ne dois enregistrer en BDD que le choix de la fermer par certains utilisateurs, tu crées une table usr_fermer_popup avec une seule colonne : l'identifiant de l'utilisateur.
    Si l'utilisateur choisit de fermer la popup, alors tu ajoutes une ligne dans la table. S'il la laisse ouverte, tu ne fais rien. Et pour savoir si l'utilisateur a choisi de fermer la popup, une simple requête sur cette table suffit.

    S'il y a plusieurs popup concernées par cette mémorisation, tu crées une table des popup (pop_id, pop_nom...) et la table précédemment citée devient une table associative entre les popups et les utilisateurs :
    usr_fermer_pop (ufp_id_utilisateur, ufp_id_popup)

    Même principe que précédemment, tu n'y enregistres que l'action de fermer par un utilisateur, au fur et à mesure que ceux-ci le décident.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    S'il y a plusieurs popup concernées par cette mémorisation, tu crées une table des popup (pop_id, pop_nom...) et la table précédemment citée devient une table associative entre les popups et les utilisateurs :
    usr_fermer_pop (ufp_id_utilisateur, ufp_id_popup)

    Même principe que précédemment, tu n'y enregistres que l'action de fermer par un utilisateur, au fur et à mesure que ceux-ci le décident.
    Voila, c'est exactement le schéma que j'ai adopté, à l'exception qu'au lieu d'ajouter lorsque l'utilisateur ferme, je retire. Car quand je créé la popup, j'ajoute mes 5000 lignes pour mes 5000 utilisateurs, que je retire une par une.

    Je préfère ça car au final, il reste 0 ligne dans ma table, tandis quand ajoutant des lignes il en resterait 5000 à la fin.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    j'ajoute mes 5000 lignes pour mes 5000 utilisateurs, que je retire une par une.
    Bonjour,
    Simple petite question, comment fais tu s'il y a un nouvel utilisateur ? A la création du user, tu viens rajouter une ligne dans ta table ?

  11. #11
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Ah non, il n'aura pas le privilège de voir la popup

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

Discussions similaires

  1. Comment récupérer des données, les comparer à une autre table.
    Par soria_t dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/08/2008, 18h58
  2. [VBA-E] extraire des données à partir d'une autre feuille
    Par zzman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/01/2007, 14h26
  3. Réponses: 5
    Dernier message: 12/12/2006, 17h24
  4. [MySQL] Insérer des données à partir d'une db mysql dans un textarea
    Par minogttao dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 22h59
  5. Mise à jour de données à partir d'une autre table
    Par rsc dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/04/2006, 11h53

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