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 :

Requête insert from select


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Points : 73
    Points
    73
    Par défaut Requête insert from select
    Bonjour,

    j'ai une table qui contient des colonnes que je devrais remplir par des données d'autres tables.
    en plus je veux faire le produit cartésien de ces données.

    Est ce que quelqu'un pourrait m'aider à écrire une telle requête (au moins avec 2 colonnes de deux tables différentes)

    NB: les tables sont hétérogène, je ne peux pas faire de jointures.

    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    j'ai un table qui contient des colonnes que je devrais remplir par des données de d'autre table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table1 (-- les colonnes à alimenter)
    SELECT -- les colonnes qui donnent les valeurs
    FROM table2
    en plus je veux faire le produit cartésien des ces données.
    Je ne comprends pas l'intérêt de la chose.

    Tu peux donner la structure des tables, un jeu de données et le résultat attendu ?
    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 !

  3. #3
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table1 (-- les colonnes à alimenter)
    SELECT -- les colonnes qui donnent les valeurs
    FROM table2
    Je ne comprends pas l'intérêt de la chose.

    Tu peux donner la structure des tables, un jeu de données et le résultat attendu ?
    J'ai une table A qui contient les colonnes colpk, col1, col2, FKtableB, FKtableC
    table B : col3, colpk
    table C : col4, colpk

    j'ai besoin d'insérer dans A le produit cartésien des deux tables B et C (juste les FKs) et les autres colonnes ont des valeurs fixes.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO A (col1, col2, FKtableB, FKtableC
    SELECT 'valeur_pour_col1', 'valeur_pour_col2', -- Supprimer les apostrophes si ce sont des valeurs numériques
      B.colpK, C.colpK
    FROM B, C
    Ceci signifie que chaque B est associé à tous les C et que chaque C est associé à tous les B.

    C'est quand même rare comme situation !

    S'agirait-il d'un quadrillage ?
    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 !

  5. #5
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Points : 73
    Points
    73
    Par défaut
    Merci pour votre réponse
    en fait la table A est utilisée pour des raisons d'optimisation d'un processus métier

    Mais une autre question stp:
    si une des deux tables B ou bien C est vide la requête select ne retourne pas de résultat (dans ce cas je devrais remplir la colonne vide par des valeurs null
    comment je peux résoudre ça

    merci d'avance

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    en faite la table A est utilisé pour des raison d'omptimisation d'un process metié
    Ce n'est pas le logiciel qui doit commandé aux données !

    Les données doivent être correctement modélisées puis les logiciels les interrogent, de préférence à travers des vues.

    si une des deux table B ou bien C est vide la requte select ne retourne pas de resultat (dans ce cas je devrais remplir la colonne vide par des valeurs null
    comment je peux resoudre ça
    Là ça se complique, dans la mesure où les deux tables ne peuvent pas être associées par une colonne, selon ton premier message.

    Mais si tu nous disais plutôt concrètement de quoi il s'agit au lieu d'abstraire en tables A B C, col1, col2..., ce serait plus facile de te guider vers la bonne solution.
    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 régulier
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ce n'est pas le logiciel qui doit commander aux données !

    Les données doivent être correctement modélisées puis les logiciels les interrogent, de préférence à travers des vues.


    Là ça se complique, dans la mesure où les deux tables ne peuvent pas être associées par une colonne, selon ton premier message.

    Mais si tu nous disais plutôt concrètement de quoi il s'agit au lieu d'abstraire en tables A B C, col1, col2..., ce serait plus facile de te guider vers la bonne solution.
    merci pour la réponse
    j'ai essayé de simplifier le contexte ( c'est un processus dans la finance de marché très compliqué et en plus les techniques c'est des marques déposées)

    je vais faire un select count sur les tables avant de les ajouter à la requête

Discussions similaires

  1. Requête Insert et Select imbriqués
    Par amirad dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/02/2009, 18h29
  2. la requête INSERT INTO. . . SELECT
    Par asma_tn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/09/2007, 17h01
  3. Requête INSERT INTO SELECT
    Par unix27 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/02/2007, 00h36
  4. insert into from select ?
    Par axel584 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/01/2005, 18h10
  5. Incrémenter champ : insert into . select max(.) + 1 from .
    Par ludo.guy dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/11/2004, 14h39

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