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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU]Requete SQL d'indicatifs chaud patate

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Requete SQL d'indicatifs chaud patate

n°2062476
betsamee
Asterisk Zeperyl
Posté le 11-03-2011 à 10:28:50  profilanswer
 

Salut aux pros du SQL, en ce beau vendredi matin je vous propose de m'aider ( :D ) avec une petit requête pas évidente.
 
J'ai une table d'indicatifs:
 
Pays    | Indicatif
Pays0  | 2
Pays1  | 21  
Pays2  | 212
Pays3  | 213
Pays4  | 3
Pays 5 | 321
 
J'ai une table d'appels
 
IdAppel | NumCorrespondant
1         | 276543
2         | 214525
3         | 213987
4         | 365145
5         | 321458
 
J'aimerais (en une requête si possible), réussir a sélectionner le pays selon l'indicatif, la difficulté ici est évidemment que l'indicatif n'est pas de longueur fixe, et sa longueur n'est pas limitée.
IdAppel | NumCorrespondant | Pays
1         | 276543                | Pays0  
2         | 214525                | Pays1
3         | 213987                | Pays3
4         | 365145                | Pays4
5         | 321458                | Pays5
 
J'ai beau creuser je vois pas trop, toute aide serait grandement appréciée  :jap:


Message édité par betsamee le 13-03-2011 à 22:48:56

---------------
un blog sur Asterisk
mood
Publicité
Posté le 11-03-2011 à 10:28:50  profilanswer
 

n°2062492
betsamee
Asterisk Zeperyl
Posté le 11-03-2011 à 11:25:30  profilanswer
 

j'ai peut etre une solution, merci de me deire si ca vous semble correct et acceptable niveau optimisation (NumCorrespondant et Indicatif) sont indexes
 
SELECT IdAppel,NumCorrespondant,Pays
FROM Indicatifs INNER JOIN Appels on Indicatif = LEFT(NumCorrespondant,length(Indicatif))
ORDER BY length(Indicatif) DESC
LIMIT 1


---------------
un blog sur Asterisk
n°2062502
betsamee
Asterisk Zeperyl
Posté le 11-03-2011 à 11:33:54  profilanswer
 

meme pas :-(
ca me gardera qu'UN enregistrement alors qu'il m'en faut un PAR appel

 

EDIT :
En fait ceci fonctionne comme un charme, mais est ce optimise?
SELECT IdAppel,NumCorrespondant,
(SELECT Pays WHERE Indicatif = LEFT(NumCorrespondant,length(Indicatif)
ORDER BY length(Indicatif) DESC
LIMIT 1)
FROM Appels


Message édité par betsamee le 11-03-2011 à 11:42:49

---------------
un blog sur Asterisk
n°2062541
esox_ch
Posté le 11-03-2011 à 13:04:50  profilanswer
 

Comment tu sais si "213987" correspond à l'indicatif 2, 21, 213, ... ? Tu y va du plus long au plus court?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2062543
betsamee
Asterisk Zeperyl
Posté le 11-03-2011 à 13:05:54  profilanswer
 

oui
ORDER BY length(Indicatif) DESC
LIMIT 1

 

donc je prend que le plus long qui correspond


Message édité par betsamee le 11-03-2011 à 13:06:30

---------------
un blog sur Asterisk

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

  [RESOLU]Requete SQL d'indicatifs chaud patate

 

Sujets relatifs
[PL/SQL] Optimisation d'un algoRequête Access : plus gros montants et "Autres"
SHRINKFILE sur SQL 2008 ?Transformer une formule text en un chiffre dans une requete SQL
Sous etat non imprimé quand requête source est vide[Microsoft Visual Studio 2008]Exécuter une requête avec une base ACCES
[RESOLU]Requete sql : comparaison chainedes bases SQL qui semblent cesser de fonctionner/planter ?
RESOLU [Access 2003] Requête jointure et union 
Plus de sujets relatifs à : [RESOLU]Requete SQL d'indicatifs chaud patate


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