Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1340 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour requete SQL

n°2134466
sisier
Posté le 03-04-2012 à 09:34:50  profilanswer
 

Hello Tout le monde,
 
Petit soucis avec une requête sql .. je sèche un peu, si vous avez une idée.
J'ai un table remplie de cette façon :
IDENTIF   QUESTION     HEURE   REPONSE    TYPE
0001          0001          111245   0001          A
0001          0001          081130   0001          A
0001          0002          031220   0003          A
0001          0003          134110   0001          C
0002          0001          111245   0001          A
0002          0001          081130   0001          A
0002          0002          031220   0003          A
0002          0003          134110   0001          C
 
J'aimerais avoir des lignes de ce type (avec type = A)
IDENTIF    REPONSE1    REPONSE2
 
J'ai essayé avec des left join .. mais c'est trop lourd pour le pocket pc.
 
Pour le moment, j'en suis la
select MAX(HEURE) as HEURE,CASE MIN(QUESTION) WHEN '001' THEN ??REPONSE?? else 'X' end REPONSE1,CASE MAX(QUESTION) WHEN '002' THEN ??REPONSE?? else 'X' end REPONSE2 from TABLE1 as A where  (QUESTION = '001' OR QUESTION = '002') AND TYPE = 'A'  GROUP BY IDENTIF    
 
Je ne sais pas comment récupérer dans ma requête la "réponse" correspondant à la ligne de la question 001 ou la ligne de la question 002
 
j'espère que j'ai bien expliqué mon problème ^^
 
Merci d'avance pour votre aide :-)

mood
Publicité
Posté le 03-04-2012 à 09:34:50  profilanswer
 

n°2134480
vave
Nice to meet me
Posté le 03-04-2012 à 10:57:40  profilanswer
 

Salut,
 
Tu veux autant de résultats qu'il y en a dans la table :
IDENTIF    REPONSE1    REPONSE2   REPONSE3 .......................... ETC
 
ou seulement les 2 premiers :
IDENTIF    REPONSE1    REPONSE2


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2134483
sisier
Posté le 03-04-2012 à 11:16:18  profilanswer
 

Merci pour ton aide
 
 
Seulement REPONSE1 ET REPONSE2 :-)
Mais pour information, je veux bien ta méthode pour avoir toutes les réponses ^^


Message édité par sisier le 03-04-2012 à 11:33:54
n°2134499
vave
Nice to meet me
Posté le 03-04-2012 à 13:47:35  profilanswer
 

Y a un truc que je ne comprend pas en fait.
Tu ne parles pas du champ QUESTION dans tes résultats ?
 
C'est pas très clair pour moi  :??:  
 
Tu peux ré-expliquer un peu mieux ?


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2134504
sisier
Posté le 03-04-2012 à 13:57:05  profilanswer
 

oui, en  gros
 
Je veux en une seule ligne pour chaque numéro d'identification donné (et seulement pour le type A) --> la réponse aux questions 001 et 002.
 
exemple :
IDENTIF   QUESTION     HEURE   REPONSE    TYPE  
0001          0001          111245   00X1          A  
0001          0001          081130   00X2          A  
0001          0002          031220   00X3          A  
0001          0003          134110   00X4          C  
0002          0001          111245   00X5          A  
0002          0001          081130   00X6          A  
0002          0002          031220   00X7          A  
0002          0003          134110   00X8          C  
 
Donnerait :
IDENTIF   REPONSE1  "(NUMQUE = 001)"  REPONSE2   "(NUMQUE = 002)"
0001        00X1                                   00X3
0002        00X5                                   00X7
 

n°2134510
vave
Nice to meet me
Posté le 03-04-2012 à 14:06:55  profilanswer
 

Et le même IDENTIF peut avoir plusieurs REPONSE pour une même QUESTION ?
IDENTIF   QUESTION     HEURE   REPONSE    TYPE  
0001          0001          111245   00X1          A  
0001          0001          081130   00X2          A  
 
Comment on sait laquelle prendre ?
 
Avec l'heure j'imagine, mais si c'est pas le même jour ?


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2134525
sisier
Posté le 03-04-2012 à 14:49:35  profilanswer
 

oui, elle peut
 
On utilise l'heure la plus grande.
Sur le jour, il y a déjà un filtre au préalable.
 

n°2134534
vave
Nice to meet me
Posté le 03-04-2012 à 15:03:09  profilanswer
 

Est-ce que ton SGBD accepte l'instruction LIMIT ?


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2134537
sisier
Posté le 03-04-2012 à 15:08:55  profilanswer
 

je ne pense pas. C'est du sql server.

n°2134564
vave
Nice to meet me
Posté le 03-04-2012 à 15:33:48  profilanswer
 

Je pense qu'il faut que tu fasses une sous requête en numérotant tes lignes avec row_number qui doit fonctionner sur sql server.
Ensuite tu remontes tes lignes numéro 1 dans une colonne et numéro 2 dans l'autre.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
mood
Publicité
Posté le 03-04-2012 à 15:33:48  profilanswer
 

n°2134605
sisier
Posté le 03-04-2012 à 16:18:30  profilanswer
 

Merci.. On va essayé de s'en sortir comme ça

n°2134727
Oliiii
Posté le 04-04-2012 à 08:51:49  profilanswer
 

Voila comment je ferai:

Code :
  1. DECLARE @tmpTable TABLE (IDENTIF char(4), QUESTION char(4), HEURE char(6), REPONSE char(4), TYPE char(1))
  2.  
  3. INSERT @tmpTable (IDENTIF, QUESTION, HEURE, REPONSE, TYPE) VALUES
  4.     ('0001','0001','111245','00x1','A'),
  5.     ('0001','0001','081130','00x2','A'),
  6.     ('0001','0002','031220','00x3','A'),
  7.     ('0001','0003','134110','00x4','C'),
  8.     ('0002','0001','111245','00x5','A'),
  9.     ('0002','0001','081130','00x6','A'),
  10.     ('0002','0002','031220','00x7','A'),
  11.     ('0002','0003','134110','00x8','C')
  12.  
  13. SELECT IDENTIF
  14.     , MAX(CASE WHEN QUESTION = '0001' THEN REPONSE ELSE '' END) REPONSE1
  15.     , MAX(CASE WHEN QUESTION = '0002' THEN REPONSE ELSE '' END) REPONSE2
  16. FROM (SELECT IDENTIF, QUESTION, HEURE, REPONSE, TYPE, ROW_NUMBER() OVER (PARTITION BY IDENTIF, QUESTION ORDER BY IDENTIF, QUESTION, HEURE DESC) RN
  17.       FROM @tmpTable) a
  18. WHERE RN = 1
  19. GROUP BY IDENTIF


 
Le resultat donne bien ce que tu veux:

Code :
  1. IDENTIF REPONSE1 REPONSE2
  2. 0001  00x1  00x3
  3. 0002  00x5  00x7


n°2134954
sisier
Posté le 05-04-2012 à 08:39:24  profilanswer
 

Oula, je n'aurais jamais trouvé tout seul.
 
Merci :)
 

Oliiii a écrit :

Voila comment je ferai:

Code :
  1. DECLARE @tmpTable TABLE (IDENTIF char(4), QUESTION char(4), HEURE char(6), REPONSE char(4), TYPE char(1))
  2.  
  3. INSERT @tmpTable (IDENTIF, QUESTION, HEURE, REPONSE, TYPE) VALUES
  4.     ('0001','0001','111245','00x1','A'),
  5.     ('0001','0001','081130','00x2','A'),
  6.     ('0001','0002','031220','00x3','A'),
  7.     ('0001','0003','134110','00x4','C'),
  8.     ('0002','0001','111245','00x5','A'),
  9.     ('0002','0001','081130','00x6','A'),
  10.     ('0002','0002','031220','00x7','A'),
  11.     ('0002','0003','134110','00x8','C')
  12.  
  13. SELECT IDENTIF
  14.     , MAX(CASE WHEN QUESTION = '0001' THEN REPONSE ELSE '' END) REPONSE1
  15.     , MAX(CASE WHEN QUESTION = '0002' THEN REPONSE ELSE '' END) REPONSE2
  16. FROM (SELECT IDENTIF, QUESTION, HEURE, REPONSE, TYPE, ROW_NUMBER() OVER (PARTITION BY IDENTIF, QUESTION ORDER BY IDENTIF, QUESTION, HEURE DESC) RN
  17.       FROM @tmpTable) a
  18. WHERE RN = 1
  19. GROUP BY IDENTIF


 
Le resultat donne bien ce que tu veux:

Code :
  1. IDENTIF REPONSE1 REPONSE2
  2. 0001  00x1  00x3
  3. 0002  00x5  00x7





Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour requete SQL

 

Sujets relatifs
[SQL] Aide requête SQL Access 2010aide requête SQL : jointure tables 0-n
[Résolu] aide requête SQL: tri par date desc avec date "nulle" en 1er[Besoin d'aide]: php dans requête SQL qui ne fonctionne pas
Aide sur requête SQL[SQL] Aide à la réalisation d'une simple requête update
besoin d'aide (avant 15h :/) requete SQL compliquéeAIDE requete SQL
[Résolu] Aide requête SQL: item n'appartenant pas à une catégorieAide sur requete SQL avec variable PHP
Plus de sujets relatifs à : Aide pour requete SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR