Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2011, 19h44   #1
Membre du Club
 
Développeur Java
Inscription : août 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : août 2008
Messages : 170
Points : 42
Points : 42
Envoyer un message via MSN à Sfaxiano Envoyer un message via Skype™ à Sfaxiano
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
Sfaxiano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 09h57   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
j'ai un table qui contient des colonnes que je devrais remplir par des données de d'autre table.
Code :
1
2
3
INSERT INTO table1 (-- les colonnes à alimenter)
SELECT -- les colonnes qui donnent les valeurs
FROM table2
Citation:
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 11h33   #3
Membre du Club
 
Développeur Java
Inscription : août 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : août 2008
Messages : 170
Points : 42
Points : 42
Envoyer un message via MSN à Sfaxiano Envoyer un message via Skype™ à Sfaxiano
Citation:
Envoyé par CinePhil Voir le message
Code :
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.
Sfaxiano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 12h18   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Code :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 12h56   #5
Membre du Club
 
Développeur Java
Inscription : août 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : août 2008
Messages : 170
Points : 42
Points : 42
Envoyer un message via MSN à Sfaxiano Envoyer un message via Skype™ à Sfaxiano
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
Sfaxiano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 13h33   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
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.

Citation:
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 16h43   #7
Membre du Club
 
Développeur Java
Inscription : août 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : août 2008
Messages : 170
Points : 42
Points : 42
Envoyer un message via MSN à Sfaxiano Envoyer un message via Skype™ à Sfaxiano
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
Sfaxiano est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h02.


 
 
 
 
Partenaires

Hébergement Web