|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : août 2008 Messages : 46 ![]() |
Bonjour à tous,
Je viens solliciter votre expertise sur SQL server. Allons tout de suite à mon problème de débutant, ma_table principale : record_id chain_id chain_n result 1 A 0 occupé 2 A 1 répondu 3 A 2 Répondeur 4 B 0 Personne 5 B 1 Libre 6 B 2 Sonné ...... ...... Pour une chain_id donnée, il y a 3 chain_n. Voici ma requête pour récupérer les enregistrements si un des 3 chain_n d'un chain_id donné, contient un résultat que j'aimerais avoir. Par exemple, si je veux savoir s'il y a des chain_id dont 1 des 3 chain_n contient le reésult = 'occupé', je fais la requête ci-dessous : Code :
Jusque là tout va bien. J'aimerais maintenant prioriser sur result, avec ma requête précédente, si je veux avoir le résultat = 'occupé' mais si 1 des 2 autres chain_n contient le result qui est plus priorisé que 'occupé', ici en l'occurence 'Répondeur' ma requête ne devrait pas retourner les record_id 1,2,3 TABLE_REF : RESULT VAL_PRIO Libre 4 occupé 2 Personne 3 Répondeur 1 répondu 5 Sonné 6 Et là, je ne sais pas comment m'y prendre J'espère d'être compréhensible. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() |
Vous ne voulez retourner que les statut d'appel les plus priorisé pour vous?
Pouvez vous donner un exemple de ce que vous voulez obtenir?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : août 2008 Messages : 46 ![]() |
Merci iberserk pour votre réponse.
J'essaie d'être clair : 1 chain_id identique (qui contient 3 chain_n) ne peut être dissocié. Je m'explique, si je veux savoir quel(s) chain_id dont un(ou plusieurs) des trois chain_n contient result 'occupé'. Le résultat doit retourner les trois chain_n de cet chain_id. Dans ce cas, la requête dans mon poste précédent retourne le résultat ci-dessous : record_id chain_id chain_n result 1 A 0 occupé 2 A 1 répondu 3 A 2 Répondeur Maintenant, dans ma 2eme table TABLE_REF contient la priorisation de result, ici on a 'Répondeur' plus priorisé que 'Occupé' > 'Personne' >.... Puisque Répondeur > occupé, donc le résultat ne doit plus retourner comme ci-dessus. Cette record_id 1,2,3 doit être exclu du résultat. J'espère que c'est plus clair |
|
|
00
|
|
|
#4 | ||
|
Membre éprouvé
![]() Inscription : avril 2005 Messages : 884 ![]() |
Quelque chose comme ceci ?
Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre éprouvé
![]() Inscription : avril 2005 Messages : 884 ![]() |
Si j'ai bien compris, voici une solution
Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Inscription : août 2008 Messages : 46 ![]() |
Merci camboui !!
Avec ta 2eme requête, on est sur la bonne voie Puisque le décor est déjà planté, je ne veux pas ouvrir un autre poste, Code :
Pour chain_id = A, parmi chain_n 0,1,2, je m'attends à obtenir 1 (dans le sens le plus priorisé, j'aurais du mêttre plus grand entier = plus grande priorité dans mon 1er poste). |
||
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() Inscription : avril 2005 Messages : 884 ![]() |
Tu mets le résultat de ma requête dans une table temporaire, requête executée pour chaque valeur result voulue.
Ensuite tu ne gardes qu'un des chain_id qui t'intéresse sur base de la priorité que tu as définie. Va voir une récente discussion à ce sujet: http://www.developpez.net/forums/d11...ntiques-table/ |
|
|
00
|
|
|
#8 | ||
|
Invité régulier
![]() Inscription : août 2008 Messages : 46 ![]() |
Merci beaucoup camboui pour tes aides précieuses !
J'ai pu trouver ce que je voulais. Je mets la solution à mon poste précédent : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com