Téléchargement
illégal
Posez votre question Signaler

Requête mySQL utilisant WHERE et SUBSTR

thipyt - Dernière réponse le 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!
Lire la suite 

Requête mySQL utilisant WHERE et SUBSTR »

6 réponses
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,
Est-ce qu'un WHERE CHAMP LIKE '%login%' ne pourrait pas répondre à ta question plus simplement ?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Je ne vois pas pourquoi tu utilises ce SUBSRT!

Epsilone
Ajouter un commentaire
Réponse
+0
moins plus
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?
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Ce document intitulé « Requête mySQL utilisant WHERE et SUBSTR » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?