Alimentation du Champ d'une table !!

Alimentation du Champ d'une table !! - SQL/NoSQL - Programmation

Marsh Posté le 23-06-2011 à 15:51:05    

Bonjour,  
Je travaille sur des requêtes SQL   plus précisément sur l’alimentation  de table  et  J’ai un petit souci.
En fait j’ai 3 tables  A ,B ,C  
La table  A :  id , ft  ( 2 , ? )
La table  B : id , lib , t1 , t2  ( 55, école , 0,7 , 0,8 )
La table C : aid , t1 , t2 , tr ( 2 , 0,7 , 0,8, 3 )
 
Le but est d’alimenter le  champ ft  de la table A    à partir des infos de la table B sachant  que le champ tr de la table C doit être égale à 3.
J’aimerais savoir quels sont  les requêtes pour alimenter  ft  dans la table A  (sur  ft on doit récupérer le champ id  de  la Table B ) ?

Reply

Marsh Posté le 23-06-2011 à 15:51:05   

Reply

Marsh Posté le 24-06-2011 à 10:54:06    

bonjour , je reviens vers vous pour solliciter votre aide  parceque je suis vraiment bloqué  sur le sujet   !!!
Merci

Reply

Marsh Posté le 24-06-2011 à 13:25:13    

Est-ce que tu pourrais donner la strucutre de tes tables? (type de champs et qui est clé étrangere de qui)
Ca aidera a comprendre un peu mieux ce qui se passe.

Reply

Marsh Posté le 28-06-2011 à 10:50:43    

Oui  bien !  Voici la structure des tables :  
 
Table A :       id   float  NUMERIC (5) clé étrangère de la Table  C  
        ft      NUMERIC (5) clé étrangère de la Table B  
       
La table B:   id   float    
        Lib String  
         t1 float  NUMERIC (3)  clé étrangère de la Table C
         t2 float NUMERIC (3)   clé étrangère de la Table B
 
La table  C :    aid  float  NUMERIC (5)  
          t1  float NUMERIC (3 )
          t2  float  NUMERIC (3)
          tr   float   NUMERIC (5)

Reply

Marsh Posté le 29-06-2011 à 09:14:14    

Quel boxon dans le nom de tes colonnes :)
Va faloir renomer tout ca pour avoir quelque chose d'un peu plus lisible.
 
Si j'ai tout bien compris ca devrai fonctionner avec ca:

Code :
  1. UPDATE TableA
  2.     SET ft = b.id
  3. FROM TableA a
  4.     JOIN TableC c ON c.aid = a.id
  5.     JOIN TableB b ON b.t1 = c.t1 AND b.t2 = c.t2 AND c.tr = 3

Reply

Marsh Posté le 29-06-2011 à 11:00:34    

Merci Oliii je vais tester pour voir si sa fonctionne .

Reply

Marsh Posté le 01-07-2011 à 12:06:19    

Bonjour, tout d’abords  merci pour ton aide l’Update marche bien.  
Cependant j’ai un autre souci  il y a une autre condition qui s’est rajouté.
En effet  b.t1 = c.t1 n’est possible que si  c.o =1  et b.t2 = c.t2 que si c.o = 2.
Du  coup en me basant sur le script j’ai refais deux script deux select qui me renvoi bien les valeurs souhaités.
1 / SELECT
    v1.id,
    formuleTypeId
    FROM TableA a
        JOIN TableC c ON c.aid = a.id
        JOIN TableB b ON b.t1 = c.t1 AND c.o=1 AND c.tr = 3
2/ SELECT
    v1.id,
    formuleTypeId  
   FROM TableA a
        JOIN TableC c ON c.aid = a.id
        JOIN TableB b ON b.t2 = c.t2 AND c.o=2 AND c.tr = 3
 
Je voulais savoir comment faire une jointure de mes deux scripts de select  ou si je pouvais le mettre sur un seul script ??    

Reply

Marsh Posté le 01-07-2011 à 16:25:31    

A vue de nez ca donnerai quelque chose comme ca (fait en vitesse sans verification, donc a prendre avec des pincettes):

Code :
  1. SELECT
  2.    v1.id,
  3.    formuleTypeId
  4.    FROM TableA a
  5.        JOIN TableC c ON c.aid = a.id
  6.        JOIN TableB b ON c.tr = 3 AND ((b.t1 = c.t1 AND c.o=1) OR (b.t2 = c.t2 AND c.o=2))


Message édité par Oliiii le 01-07-2011 à 16:26:24
Reply

Marsh Posté le 05-07-2011 à 16:45:51    

Bonjour Oliiii  
 Sa marche sauf que sa me ramène pas le résultat attendue !  
Et je pense que je n’ai pas du le préciser au début, en effet   en lançant la requête  
1. SELECT
2.     a.id, b.t1, b.t2
3.     formuleTypeId
4.     FROM TableA a
5.         JOIN TableC c ON c.aid = a.id
6.         JOIN TableB b ON c.tr = 3 AND ((b.t1 = c.t1 AND c.o=1) OR (b.t2 = c.t2 AND c.o=2))  
Je me rends compte qu’il me renvoi pas que les couples t1, t2 que je veux.
Pour être plus clair dans ma table B on le couple t1 t2 correspond a un libellé A avec un id 2.
Si t1=5, t2 =4, Lib = A, id = 3, en faisant la requête ci-dessus je dois récupérer le même couple .  

Reply

Marsh Posté le 05-07-2011 à 16:48:02    

Je me prend un peu la tête avec  mon souci  et je suis ptr pas trop clair mais je suis débutant en SQL .  Merci de votre aide

Reply

Marsh Posté le 05-07-2011 à 16:48:02   

Reply

Marsh Posté le 05-07-2011 à 17:04:21    

Pour infos les deux requêtes d'avant  me donnent les bon résultats  :  
 
1 / SELECT
    v1.id,
    formuleTypeId
    FROM TableA a
        JOIN TableC c ON c.aid = a.id
        JOIN TableB b ON b.t1 = c.t1 AND c.o=1 AND c.tr = 3
2/ SELECT
    v1.id,
    formuleTypeId  
   FROM TableA a
        JOIN TableC c ON c.aid = a.id
        JOIN TableB b ON b.t2 = c.t2 AND c.o=2 AND c.tr = 3  
 
Je pense faut juste que je trouve un moyen de pouvoir faire une jointure des deux qui pourra me renvoyer les bons résultats ( avec les bonnes couples ) .

Reply

Marsh Posté le 07-07-2011 à 15:00:42    

Bonjour   quelqu'un pourrez m'aider  sur le sujet svp ?

Reply

Sujets relatifs:

Leave a Replay

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