INSERT en prenant 2 lignes dans la table source

INSERT en prenant 2 lignes dans la table source - SQL/NoSQL - Programmation

Marsh Posté le 29-06-2009 à 09:04:26    

Bonjour,
 
Alors voila j'ai un petit problème au niveau d'un insert, je voudrais rendre celui-ci automatique à la création de ma base.
 
J'ai deux tables et la table association qui lie ces deux tables.
TABLE1 (ID_1, CD_1,LB_1)
TABLE2 (ID_2, CD_2, LB_2, NR_2)
TABLE3 (#ID_1, #ID_2)
 
J'ai dans TABLE2 différents objets et le NR_2 ne varie que de 1 à 3, le but serait de pouvoir lier automatiquemet 3 objets de ma TABLE2 avec un objet à créé de TABLE1.
Ceci doit pouvoir être automatique car cette liaison doit se faire seulement avec des objets dont le NR_2 est différent. Je dois donc créé un objet dans TABLE1 pour chaque combinaison de 3 objets (un avec NR=1, l'autre avec NR=2 et enfin NR=3).
 
J'espère avoir été claire. Si besoin n'hésitez pas à posez des questions car je ne vois vraiment pas comment faire.
 
Cordialement
 
gorion18
             

Reply

Marsh Posté le 29-06-2009 à 09:04:26   

Reply

Marsh Posté le 29-06-2009 à 09:13:47    

si je comprends bien, CD_1=CD_2 et LB_1=LB_2 tout le temps?
 
je suis pas sur de voir l'interet, mais en tout cas il me semble que ton modèle est mal concu si tu es obligé de faire ca...
 
en fait, il te faudrait une table  
TABLE1 (ID_1, CD_1,LB_1) et une autre  
TABLE2 (ID_2, NR_2)  et c'est tout à priori. en utilisant l'héritage.
 
mais j'irai même plus loin en disant que tu as systématiquement les valeurs 1, 2 et 3 pour tous les champs, je suis même pas sur que ca vaille le coup de les mettre en base.
 
 
et sinon, en supposant que tu ne puisse pas toucher au modele de données, tu devrais voir du coté des triggers...

Reply

Marsh Posté le 29-06-2009 à 09:15:27    

rien compris à ce que tu veux faire, mais pour moi, insertion automatique = trigger

 

edit: [:benou_grilled]


Message édité par Harkonnen le 29-06-2009 à 09:15:46

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-06-2009 à 15:19:01    

EUh je crois que je me suis pas fait bien comprendre donc je vasi tenter de réexpliquer.
 
En fait je voudrais lier 3 objets de ma TABLE1 pour en faire un objet de ma TABLE2.
Et pour lier ces objets je me fie au champ NR_2 qui ne peut être égale que a 1,2 ou 3 pour un objet.
Je veuw que l'objet que je créé dans ma TABLE2 soit une composition d'un objet où NR_2 = 1, d'un autre ou NR_2 = 2 et d'un autre ou NR_2 = 3.
Je pense avoir été plus claire.
Vu qu'il y a un grand nombre de possibilité je voudrais pas tout faire à la main. Le Trigger serait peut-être une solution mais je ne vois pas comment faire cela.
 
Merci de m'éclairer.
 
Cordialement
 
gorion18

Reply

Marsh Posté le 30-06-2009 à 15:28:27    

essaie de réexpliquer en détaillant le type d'objet dont tu parles (c'est quoi, des voitures? des pc? des cartables?) histoire qu'on visualise un peu mieux parce que la c'est pas transcendant.

Reply

Marsh Posté le 30-06-2009 à 15:28:43    

euh pour moi j'ai toujours rien compris  
dsl c'est peut etre moi qui comprends rien
donne un exemple concret , je pense que ca sera plus simple a comprendre

Reply

Marsh Posté le 30-06-2009 à 16:16:26    

Imaginons que dans ma TABLE1 se soient des articles de pêche par exemple de 3 catégories différentes.
(catégorie 1 : bouchons, catégorie 2 : lignes, catégorie 3 : cannes a pêche)  (la catégorie représenterait ici le NR_2)
Et on souhaiterait créé tous les packs possible contenant un bouchon, une ligne et une canne a pêche et insérer ce pack dans ma TABLE2 en faisant les bonnes liaisons dans ma TABLE3. voila je peux pas être plus clair.
Donc je voudrais savoir comment créer ces packs automatiquement (c'est un exemple)
 
Merci
 
cordialement
 
gorion18

Reply

Marsh Posté le 30-06-2009 à 16:31:34    

ben c'est déja BEAUCOUP plus clair... ^^

 

du coup ce qu'il te faut comme requête c'est qqchose du genre:

Code :
  1. SELECT t1.*, t2.*, t3.*
  2. FROM TABLE1 t1, TABLE1 t2, TABLE1 t3
  3. WHERE t1.NR_2='1'
  4. AND t2.NR_2='2'
  5. AND t3.NR_2='3'


ca permet de faire le produit cartésien de TABLE1 avec elle même 3 fois.

 

ensuite tu peux insérer les résultat de cette requête dans une autre table via un

Code :
  1. INSERT INTO TABLE2 SELECT t1.*, t2.*, t3.*
  2. FROM TABLE1 t1, TABLE1 t2, TABLE1 t3
  3. WHERE t1.NR_2='1'
  4. AND t2.NR_2='2'
  5. AND t3.NR_2='3'


Message édité par pataluc le 30-06-2009 à 16:32:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed