Mettons une table d'indicatifs:
Pays | Indicatif
-------------------
Pays0 | 2
Pays1 | 21
Pays2 | 212
Pays3 | 213
Pays4 | 3
Pays 5 | 321
Une table d'appels
IdAppel | NumCorrespondant
-------------------------------
1 | 276543
2 | 214525
3 | 213987
4 | 365145
5 | 321458
Est il possible en une seule requête, de trouver 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
La solution elle est la !
L'astuce étant une sous requête qui sélectionne tous les pays pouvant correspondre a l'indicatif mais ne garde que le plus long, donc le plus correspondant!
SELECT IdAppel,NumCorrespondant,
(
SELECT Pays
FROM Indicatifs
WHERE Indicatif = LEFT(NumCorrespondant,length(Indicatif))
ORDER BY length(Indicatif) DESC
LIMIT 1
)
FROM Appels
en espérant que ca puisse être utile a quelqu'un, si quelqu'un en revanche connait mieux, je suis preneur.



















