[SQL] Aide requête avec enregistrement facultatif

Aide requête avec enregistrement facultatif [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 21-03-2015 à 18:44:04    

Bonjour  :hello:
 

 

N'ayant pas pratiquer le SQL depuis quelque année, je me trouve face à un petit soucis.

 

La situation :
J'ai une table avec les colonnes C1 et C2. La valeur C1 est obligatoire (mais non unique) et la valeur C2 est facultatif.
 par exemple :
C1          C2
A1           X
A2          
B1           Y
C1

 

X sera affecté à A.
Y à B
et C n'a pas de valeur C2

 

Et l'objectif est d'avoir pour les enregistrement présent dans C2, les valeurs C1 associés

 

Résultat attendu :
C2          C1
X           A1
X           A2
Y           B1

 

j'ai essayé avec une sous table mais cela ne fonctionne pas.


Message édité par Uncle_Scrooge le 21-03-2015 à 18:47:56
Reply

Marsh Posté le 21-03-2015 à 18:44:04   

Reply

Marsh Posté le 21-03-2015 à 20:12:08    

pourquoi tu associe X a A2 ?


---------------

Reply

Marsh Posté le 21-03-2015 à 22:12:40    

à cause de la lettre A.
C2 est associé à la première lettre de C1.

   


Message édité par Uncle_Scrooge le 21-03-2015 à 22:13:54
Reply

Marsh Posté le 22-03-2015 à 06:50:32    

Tu as un problème de structure de tables.
 
As-tu la possibilité de la changer ?

Reply

Marsh Posté le 22-03-2015 à 09:46:17    

oui, c'est possible.

 

Je peux faire :

 

C1    C2     C3
A     1      X
A     2    
B     1      Y
C     1

 

et l'objectif serait d'avoir ce résultat :
C3    C2     C1
X     1      A
X     2      A
Y     1      B


Message édité par Uncle_Scrooge le 22-03-2015 à 09:53:29
Reply

Marsh Posté le 22-03-2015 à 09:53:47    

j'ai essayé de faire quelque chose comme :
select C3, C2, C1  
from Table T1, (select C1 from table where C3 = X) T2
where T1.C1 = T2.C1;
 
mais la colonne C3 est vide pour A / 2 alors que je souhaiterais avoir un X.

Reply

Marsh Posté le 23-03-2015 à 14:06:20    

Salut

 

Vu que tu ne precises pas, on va poser comme hypothese que seules les lignes avec c2=1 ont une valeur dans c3.
Si c'est pas le cas, merci de preciser, ainsi que d'expliquer quelles valeurs sont possibles et laquelle choisir.

 

Si c'est le cas, tout simplement:

SELECT t_principale.c3, t_principale.c2, t_principale.c1
FROM table t_principale
JOIN (SELECT c1, c3
      FROM table
      WHERE c3 IS NOT NULL) t_c3s ON t_c3s.c1 = t_principale.c1


Message édité par lasnoufle le 23-03-2015 à 14:07:00

---------------
C'était vraiment très intéressant.
Reply

Sujets relatifs:

Leave a Replay

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