Requete SQL d'indicatifs chaud patate [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 11-03-2011 à 11:25:30
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
Marsh Posté le 11-03-2011 à 11:33:54
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
Marsh Posté le 11-03-2011 à 13:04:50
Comment tu sais si "213987" correspond à l'indicatif 2, 21, 213, ... ? Tu y va du plus long au plus court?
Marsh Posté le 11-03-2011 à 13:05:54
oui
ORDER BY length(Indicatif) DESC
LIMIT 1
donc je prend que le plus long qui correspond
Marsh Posté le 11-03-2011 à 10:28:50
Salut aux pros du SQL, en ce beau vendredi matin je vous propose de m'aider ( ) 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
Message édité par betsamee le 13-03-2011 à 22:48:56
---------------
un blog sur Asterisk