Requete SQL - PHP - Programmation
Marsh Posté le 11-02-2005 à 13:01:56
SELECT * FROM table WHERE prenom LIKE '%C' OR prenom LIKE '%D' OR prenom LIKE '%E' .... etc
Ca m'etonnerait qu'il y ai un truc tout cuit en SQL...
en fait moi je ferai un tableau associatif avec un constructeur de requête
Marsh Posté le 11-02-2005 à 13:02:35
et ca n'as aucun rapport avec PHP
Marsh Posté le 11-02-2005 à 13:03:34
KangOl a écrit : et ca n'as aucun rapport avec PHP |
... je pense qu'on va y arriver tres rapidement (surtout si SQL ne me le permet pas directement !)
Marsh Posté le 11-02-2005 à 13:05:32
SELECT * FROM newsletter WHERE email REGEXP '(%C|%D|%E|...);'
ca marche ca ?
Marsh Posté le 11-02-2005 à 13:06:48
donc... si je comprends bien SQL ne permets pas ça... le probleme c'est que mon cas est encore plus particulier....
je veux qu'il affiche tous les resultats commencant par le masque que le mec tape dans un champ de formulaire... genre il veut que tous les noms commencants par "CHA" s'affichent... ainsi que les suivants... ça se complique !
Marsh Posté le 11-02-2005 à 13:07:37
simogeo a écrit : SELECT * FROM newsletter WHERE email REGEXP '(%C|%D|%E|...);' |
j'y ai pensé au regex.. je vais essayer
Marsh Posté le 11-02-2005 à 13:08:20
ainsi que les suivant
ca s'est autre chose ...
Marsh Posté le 11-02-2005 à 13:10:08
freed102 a écrit : j'y ai pensé au regex.. je vais essayer |
je viens de jeter un oeil sur la doc
http://dev.mysql.com/doc/mysql/fr/regexp.html
ca serait plutôt un truc du style :
Code :
|
Marsh Posté le 11-02-2005 à 13:12:54
donc,je viens de faire ça :
Code :
|
mais il m'affiche tout !
Marsh Posté le 11-02-2005 à 13:14:01
ou plutot quelque chose comme ca :
Code :
|
Marsh Posté le 11-02-2005 à 13:17:39
ça marche dans le cas d'une lettre...
mais si je tape plusieurs lettres ça affiche n'importe quoi !
Marsh Posté le 11-02-2005 à 13:17:52
$sql="SELECT * FROM claimsi WHERE nom REGEXP ('^[$nom-z]') ORDER BY nom ASC";
Marsh Posté le 11-02-2005 à 13:27:02
...
SELECT * FROM claimsi WHERE nom LIKE '%C%' ORDER BY nom ASC
ca te cherchera tout les noms ayant un C quelque soit sa place, et classé par ordre alphabetique
Marsh Posté le 11-02-2005 à 13:29:21
spike a écrit : ... |
ouai ça je sais mais dans mon cas c pas bon, je veux uniquement les noms commencant par C... et les autres apres la lettre C... mais par exemple si un mec s'appelle "Alberic" ... bah dans ta formule il va apparaitre ! et moi je veux pas ! lol !
Marsh Posté le 11-02-2005 à 13:32:37
freed102 a écrit : ouai ça je sais mais dans mon cas c pas bon, je veux uniquement les noms commencant par C... et les autres apres la lettre C... mais par exemple si un mec s'appelle "Alberic" ... bah dans ta formule il va apparaitre ! et moi je veux pas ! lol ! |
bah ca alors :
SELECT *
FROM table WHERE left( nom, 1 ) BETWEEN 'C' AND 'Z'
ORDER BY nom ASC
ca marche
Marsh Posté le 11-02-2005 à 13:53:12
freed102 a écrit : $sql="SELECT * FROM claimsi WHERE nom REGEXP ('^$nom*') ORDER BY nom ASC"; |
Hmmm, dans les regexp, si tu veux dire "tous les characteres" c'est "." qu'il faut utiliser et non "*".
Donc :
Code :
|
Marsh Posté le 11-02-2005 à 14:04:37
simogeo a écrit : je viens de jeter un oeil sur la doc
|
Oh bordel je savais pas qu'on pouvait utiliser des regexp dans les requêtes sql merci
Marsh Posté le 11-02-2005 à 14:10:36
FlorentG a écrit : Oh bordel je savais pas qu'on pouvait utiliser des regexp dans les requêtes sql merci |
j'aurais jamais pensé non plus à balancer une syntaxe comme ça à MySQL !!!
Il est quand meme bien ce forum, tout plein des choses on y apprend
Marsh Posté le 11-02-2005 à 14:11:22
SELECT * FROM newsletter WHERE tolower(email) REGEXP '^[c-z]+'; |
Marsh Posté le 11-02-2005 à 14:11:41
Xav_ a écrit : j'aurais jamais pensé non plus à balancer une syntaxe comme ça à MySQL !!! |
Ouais, y'a vraiment une quantité de matière cérébrale extrèmement importante et bénéfique
Marsh Posté le 11-02-2005 à 14:37:59
J'aurai dit
select¨* from table
where prenom >= 'c'
order by prenom
Avec MySql je sais que ca ne posera pas de soucis,
en revanche je ne sais pas si c'est du SQL "normé"
Pour ce qui est du REGEXP '(%C|%D|%E|...);' et CIE,
A EVITER car totalement inutile
Le % ne sert pas est bouffe de la ressource
Je pense que pour les majuscules,
ya pas d'problème
Marsh Posté le 11-02-2005 à 14:38:40
la plus proche de ce que je veux pour l'instant c celle là :
$sql="SELECT * FROM claimsi WHERE nom REGEXP ('^[$nom-z]') ORDER BY nom ASC";
Marsh Posté le 11-02-2005 à 14:50:11
en effet rompi, c'est un peu moins prise de tete que ma requete citée plu haut, je pensais plus au signes < > avec les lettres
spike a écrit : bah ca alors : |
i'm boulay
Marsh Posté le 11-02-2005 à 14:51:48
And the winner is :
$sql="SELECT * FROM claimsi WHERE nom >= '$nom' ORDER BY nom ";
Marsh Posté le 11-02-2005 à 14:58:44
FlorentG a écrit : Ouais, y'a vraiment une quantité de matière cérébrale extrèmement importante et bénéfique |
tu m'étonnes
rompi a écrit : J'aurai dit |
a ui ... on est trop con
edit : en même temps ... c bien cheloud ....
rompi a écrit : |
uiui ... nan mais j'ai pas dis que c'tait la syntaxe heinnn .. j'ai juste balancé une piste
chacal_one333 a écrit : faut rajouter un + pour que ca prenne plusieur caratère |
mais ué quoi
Marsh Posté le 11-02-2005 à 15:17:03
simogeo a écrit : |
Bah c pas si chelou que ça ! yaka regarder dans ton repertoire téléphonique (bien que ça depende des téléphones)... mais su mon Nokia... tu tapes une ou plusieurs lettres et hop ! ça pointe vers le nom le plus proche dans la liste !
bah là c pareil ! c un peu un pointeur dans une liste de noms ! et l'avantage c'est que si tu connais pas l'orthographe exacte du nom.. bah il t'affiche les noms les plus proches
Marsh Posté le 11-02-2005 à 15:26:37
freed102 > je parle de la syntaxe/sémantique SQL...
sémantiquement, dire qu'un champ de type text est supérieur ou égal à un lettre c'est un non sens! (mais c'est bien que ca marche heinn ) Je serais curieux de savoir si c'est standard en SQL
Marsh Posté le 11-02-2005 à 15:29:20
Je suis d'accord, je ne suis pas certain que cela fasse parti d'une des normes de SQL
Marsh Posté le 11-02-2005 à 15:33:09
Marsh Posté le 11-02-2005 à 15:37:10
ah okok ! autant pour moi !
effectivement ça n'a pas bcp de sens sauf si on considere que A est la premiere lettre et Z la 26eme ... là on peut trier avec >= non ?
Marsh Posté le 11-02-2005 à 12:58:22
Hello !
je cherche une requete me permettant d'afficher une liste triée par ordre alphabétique en commençant par une lettre spécifique...
exemple j'ai plusieurs enregistrements :
alain
bernard
charles
claude
eric
fred
francois
...
si je veux recuperer les prenoms à partir de la lettre "C" il va me retourner :
charles
claude
eric
fred
francois
...
... pour l'instant j'ai fait :
SELECT * FROM table WHERE prenom LIKE '%C'
... mais il me retourne que les prenoms commençants par C...
mais moi je veux les suivants !
Comment qu'on fait ?
Merci
Freed