Requête mySQL utilisant WHERE et SUBSTR [Fermé]

- - Dernière réponse : ludo394
Messages postés
1
Date d'inscription
jeudi 19 janvier 2012
Statut
Membre
Dernière intervention
19 janvier 2012
- 19 janv. 2012 à 18:06
Bonjour,

J'ai actuellement une base de donnée regroupant des communications.
Dans la table principale, intitulée communications, j'ai une "id_com" dans laquelle je ne souhaite sélectionnée que certaines valeurs.

Mes id_com sont composées par la concaténation d'un id qui s'incrémente à chaque création de com et d'un login utilisateur qui lui est constant.

Cela se présente donc de la façon suivante:

id_com
133012
233012
133026
333012
133045
233045
433012
533012
...

Où 33012, 33026 et 33045 sont des logins utilisateur.

Je souhaite pouvoir ne récupérer avec mon SELECT, que les ligne présentant le login de mon choix.

J'ai essayé d'utiliser la requête suivant, où la variable login est récupérée en php, mais cela ne passe pas:

'SELECT id_com FROM communication WHERE (SUBSTR(id_com,-5,5) = \''.$data['login'].'\)'


Je voulais donc savoir s'il était possible d'utiliser un SUBSTR dans un WHERE et si oui, est-ce que vous aviez une idée de l'endroit d'où pouvait venir mon soucis.

Merci d'avance!
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
2
Merci
Ton problème, posé comme ça, n'est pas clair!

Donne moi un exemple de ton id_com si c'est possible!
Sinon, essaye d'enlever les parenthèses!
J'ai essayé cette syntaxe et ça marche pour moi thypit :
SELECT * FROM TABLE WHERE SUBSTR(CHAMPS,1,4) = "abcd";

Epsilone

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58822 internautes nous ont dit merci ce mois-ci

Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
1
Merci
Si tu veux récuprer les 5 premiers caractères de ton id_com, tu dois faire : SUBSTR(id_com,1,5)

Voici la syntaxe :
SUBSTR(str,pos): sélectionne tous les caractères de <str> en commençant par position <pos>. Notez que cette syntaxe n’est pas prise en charge par SQL Server.

SUBSTR(str,pos,len): en commençant par le caractère <pos> dans la chaîne <str>, sélectionne les caractères <len> suivants.

Sinon, si tes id_com sont sous le format :
id_com
133012
233012
133026
333012
133045
233045
433012
533012

Bin je ne vois pas l'utilité de ce SUBSTR!

Explique moi!

Epsilone
1
Merci
En faisant SUBSTR(id_com, -5, 5), je récupère bien seulement mon login, du moins en php. Je sais donc que la fonction fonctionne, je l'ai testé et affiché mes login issus de cette fonction.

Le soucis, c'est que pour faire une pagination qui nécessitera un certain nombre de tests, je dois utiliser cette fonction SUBSTR dans mon WHERE, pour ne prendre en compte que les id_com correspondant à mon login, c'est à dire le login que je compare, comme expliqué dans mon premier message.


Ma question n'est donc pas de savoir comment fonction la fonction SUBSTR, mais plutôt de savoir s'il est possible de l'utiliser dans un WHERE et si oui, comment.


Tu dis ne pas voir l'utilité de mon SUBSTR, mais comment veux-tu retrouver les com correspondant à mon login (de 5 chiffres et commençant par 33) sans utiliser cette fonction??

J'ai trouvé cette fonction et j'ai pensé qu'elle pouvait correspondre à mon besoin, maintenant il y a peut être d'autres solutions et qu'effectivement cette fonction n'est pas adaptée ici...
Je n'ai pas la prétention de tout connaitre du php et mySQL mais et c'est pour ça que j'espère que quelqu'un pourra m'aider à résoudre mon problème!
Messages postés
1
Date d'inscription
jeudi 19 janvier 2012
Statut
Membre
Dernière intervention
19 janvier 2012
1
1
Merci
Bonjour,
Est-ce qu'un WHERE CHAMP LIKE '%login%' ne pourrait pas répondre à ta question plus simplement ?
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
0
Merci
Bonjour,

Je ne vois pas pourquoi tu utilises ce SUBSRT!

Epsilone
0
Merci
Euh... bah pour ne récupérer que les id_com correspondant à mon login!

Comment veux-tu faire sinon?

La fonction substr permet de ne s'intéresser qu'à une partie de mon id_com et de le comparer avec mon login.
Du moins c'est comme ça que je le vois...

Peut-être que je me trompe sur l'utilisation de cette fonction... Peux-tu développer stp?