{MySQL} like sur champs de la bae avec %

Fermé
ybvj Messages postés 3 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 15 juin 2009 - 12 juin 2009 à 12:10
ybvj Messages postés 3 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 15 juin 2009 - 15 juin 2009 à 09:13
Bonjour,

Je suis en train de codé une petite requête que je pensais simple et qui me bloque complétement.

Cette requête doit vérifier qu'un le début d'un nom de produit corresponde à un champs de ma base de données.

J'ai donc fait ça :

SELECT * FROM wp_posts where '$nom' like 'wp_posts.nom_commercial%' and wp_posts.post_status="publish" group by wp_posts.post_title order by wp_posts.post_date desc limit 5;

J'ai donc ma variable $nom que je compare à mon champs nom_commercial stocké dans ma base et qui doit me retourner les enregistrements où le début de la variable $nom (exemple : 'motomed x25') correspond à mon champs nom_commercial (exemple : motomed).

Le problème est que mon le % ne semble pas fonctionner avec le champs car soit je ne met pas de "" et erreur sql, soit j'en met et il est interprété comme du texte ...

C'est probablement tout bête mais j'en perd mon latin ...

Merci de votre aide

4 réponses

0866 Messages postés 31 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 3
12 juin 2009 à 16:03
dans quel langage du programmation tu va utiliser cette requêtte?
0
0866 Messages postés 31 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 3
12 juin 2009 à 16:06
voila comme exemple d'utilisation de l'expression LIKE dans Oracle, j'espère qui vous aide bien.

SELECT park_name
FROM park
WHERE park_name LIKE 'State Park%';
0
snake-d12 Messages postés 218 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 25 septembre 2009 57
12 juin 2009 à 17:36
Salut,
je pense que dans votre reqûete vous devez changer la position de la variable nom et la colonne (wp_posts.nom_commercial ) en mettant :

SELECT * FROM wp_posts where 'wp_posts.nom_commercial' like '$nom%' and wp_posts.post_status='publish' group by wp_posts.post_title order by wp_posts.post_date desc limit 5;

et si vous cherchez "motomed25" et dans la base de données vous avez un enregistrement "Motomed" c'est normal qu'il va pas l'afficher, car lorsqu'il cherche une valeur qui débute avec "Motomed25", il va pas l'a trouver car même "Motomed" ne débute pas avec "mohamed25".

Mais si vous essayer l'inverse ça va retourner une résultat, si vous avez une valeur "Motomed" essaye de chercher en mettant "Motom".

Bonne Chance

0
ybvj Messages postés 3 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 15 juin 2009 1
15 juin 2009 à 09:13
Merci de votre aide,

J'interroge ma base mysql en passant par du php.

Mon champ "wp_posts.nom_commercial" contient le terme à recherché qui est constitué d'une version tronqué du nom complet.

Je dois dois vérifier si $nom, ma variable contenant le nom complet du produit, ressemble à "wp_posts.nom_commercial" qui contient le nom ou un abrégé du nom du produit stocké dans la base.

D'où l'ordre de ma requête afin de trouver si $nom débute par "wp_posts.nom_commercial" mais cela semble impossible de rajouter % afin de ne prendre en compte que le début de $nom ...

Voilà mon problème.

Si j'inverse l'ordre, cela ne fonctionne plus evidemment vu que $wp... contient la version tronqué et non complète.
0