Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1519 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Requete SQL

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Requete SQL

n°978548
freed102
Arayashiki
Posté le 11-02-2005 à 12:58:22  profilanswer
 

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

mood
Publicité
Posté le 11-02-2005 à 12:58:22  profilanswer
 

n°978549
Profil sup​primé
Posté le 11-02-2005 à 12:59:54  answer
 

deja c'est C% pas %c :D
 
sinon c'est une bonne question [:huit] ( [:drapo] )

n°978550
freed102
Arayashiki
Posté le 11-02-2005 à 13:00:27  profilanswer
 

oui je me suis trompé en retapant ma requete ! lol !

n°978552
simogeo
j'ai jamais tué de chats, ...
Posté le 11-02-2005 à 13:01:56  profilanswer
 

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 [:spamafote]


Message édité par simogeo le 11-02-2005 à 13:02:18

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°978553
KangOl
Profil : pointeur
Posté le 11-02-2005 à 13:02:35  profilanswer
 

et ca n'as aucun rapport avec PHP :o


---------------
Nos estans firs di nosse pitite patreye...
n°978554
freed102
Arayashiki
Posté le 11-02-2005 à 13:03:34  profilanswer
 

KangOl a écrit :

et ca n'as aucun rapport avec PHP :o


... je pense qu'on va y arriver tres rapidement (surtout si SQL ne me le permet pas directement !)

n°978556
simogeo
j'ai jamais tué de chats, ...
Posté le 11-02-2005 à 13:05:32  profilanswer
 

SELECT * FROM newsletter WHERE email REGEXP '(%C|%D|%E|...);'
 
ca marche ca ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°978557
freed102
Arayashiki
Posté le 11-02-2005 à 13:06:48  profilanswer
 

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 !

n°978558
freed102
Arayashiki
Posté le 11-02-2005 à 13:07:37  profilanswer
 

simogeo a écrit :

SELECT * FROM newsletter WHERE email REGEXP '(%C|%D|%E|...);'
 
ca marche ca ?


j'y ai pensé au regex.. je vais essayer

n°978559
KangOl
Profil : pointeur
Posté le 11-02-2005 à 13:08:20  profilanswer
 

ainsi que les suivant :/
ca s'est autre chose ...


---------------
Nos estans firs di nosse pitite patreye...
mood
Publicité
Posté le 11-02-2005 à 13:08:20  profilanswer
 

n°978560
simogeo
j'ai jamais tué de chats, ...
Posté le 11-02-2005 à 13:10:08  profilanswer
 

freed102 a écrit :

j'y ai pensé au regex.. je vais essayer


 
je viens de jeter un oeil sur la doc [:franck75]
http://dev.mysql.com/doc/mysql/fr/regexp.html
 
ca serait plutôt un truc du style :
 

Code :
  1. SELECT * FROM newsletter WHERE email REGEXP '(^C*|^D*|^E*|...);'


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°978561
freed102
Arayashiki
Posté le 11-02-2005 à 13:12:54  profilanswer
 

donc,je viens de faire ça :
 

Code :
  1. switch ($_SESSION['consult_by'])
  2.   {
  3.  case "numero_rapport" :
  4.       $sql="SELECT * FROM claimsi WHERE numero_rapport LIKE '$numero_rapport%'";
  5.     $req=mysql_query($sql);
  6.     $numrows=mysql_num_rows($req);
  7.     //$data=mysql_fetch_array($req);
  8.     break;
  9.   case "nom" :
  10.      $sql="SELECT * FROM claimsi WHERE nom REGEXP ('^$nom*') ORDER BY nom ASC";
  11.     $req=mysql_query($sql);
  12.     $numrows=mysql_num_rows($req);


 
mais il m'affiche tout ! :(

n°978562
KangOl
Profil : pointeur
Posté le 11-02-2005 à 13:14:01  profilanswer
 

ou plutot quelque chose comme ca :

Code :
  1. SELECT * FROM newsletter WHERE tolower(email) REGEXP '^[c-z]';


---------------
Nos estans firs di nosse pitite patreye...
n°978564
freed102
Arayashiki
Posté le 11-02-2005 à 13:16:06  profilanswer
 

ouaiiiiiii... on s'en rapproche là ! :)

n°978566
freed102
Arayashiki
Posté le 11-02-2005 à 13:17:39  profilanswer
 

ça marche dans le cas d'une lettre...
mais si je tape plusieurs lettres ça affiche n'importe quoi ! :lol:

n°978567
freed102
Arayashiki
Posté le 11-02-2005 à 13:17:52  profilanswer
 

$sql="SELECT * FROM claimsi WHERE nom REGEXP ('^[$nom-z]') ORDER BY nom ASC";

n°978577
Profil sup​primé
Posté le 11-02-2005 à 13:27:02  answer
 

...
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

n°978581
freed102
Arayashiki
Posté le 11-02-2005 à 13:29:21  profilanswer
 

spike a écrit :

...
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


 
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 !

n°978588
Profil sup​primé
Posté le 11-02-2005 à 13:32:37  answer
 

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 :D


Message édité par Profil supprimé le 11-02-2005 à 13:33:13
n°978633
cerel
Posté le 11-02-2005 à 13:53:12  profilanswer
 

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 :
  1. $sql="SELECT * FROM claimsi WHERE nom REGEXP ('^$nom.') ORDER BY nom ASC";


Message édité par cerel le 11-02-2005 à 13:54:18
n°978651
FlorentG
Unité de Masse
Posté le 11-02-2005 à 14:04:37  profilanswer
 

simogeo a écrit :

je viens de jeter un oeil sur la doc [:franck75]
http://dev.mysql.com/doc/mysql/fr/regexp.html
 
ca serait plutôt un truc du style :
 

Code :
  1. SELECT * FROM newsletter WHERE email REGEXP '(^C*|^D*|^E*|...);'



Oh bordel :eek: je savais pas qu'on pouvait utiliser des regexp dans les requêtes sql :love:  :love: merci :jap:

n°978660
Xav_
The only one...
Posté le 11-02-2005 à 14:10:36  profilanswer
 

FlorentG a écrit :

Oh bordel :eek: je savais pas qu'on pouvait utiliser des regexp dans les requêtes sql :love:  :love: merci :jap:


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  :D


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°978663
Profil sup​primé
Posté le 11-02-2005 à 14:11:22  answer
 

SELECT * FROM newsletter WHERE tolower(email) REGEXP '^[c-z]+';

:??:

n°978664
FlorentG
Unité de Masse
Posté le 11-02-2005 à 14:11:41  profilanswer
 

Xav_ a écrit :

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  :D

Ouais, y'a vraiment une quantité de matière cérébrale extrèmement importante et bénéfique :)

n°978682
p27br
Posté le 11-02-2005 à 14:22:40  profilanswer
 

select¨* from table
where prenom >= 'c%'
order by prenom

n°978710
rompi
Posté le 11-02-2005 à 14:37:59  profilanswer
 

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  :sweat:  
 
Le % ne sert pas est bouffe de la ressource
Je pense que pour les majuscules,
ya pas d'problème


Message édité par rompi le 11-02-2005 à 14:38:48
n°978711
freed102
Arayashiki
Posté le 11-02-2005 à 14:38:40  profilanswer
 

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";

n°978714
Profil sup​primé
Posté le 11-02-2005 à 14:40:55  answer
 

faut rajouter un + pour que ca prenne plusieur caratère :o

n°978718
rompi
Posté le 11-02-2005 à 14:42:57  profilanswer
 

tu parles à qui chacal_one333 ?

n°978723
freed102
Arayashiki
Posté le 11-02-2005 à 14:48:19  profilanswer
 

ouai je sais je suis pas tres fort en Regex !

n°978726
rompi
Posté le 11-02-2005 à 14:49:49  profilanswer
 

tu n'as pas surtout pas besoin de regex pour ton truc...

n°978727
Profil sup​primé
Posté le 11-02-2005 à 14:50:11  answer
 

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 :
SELECT *  
FROM table WHERE left( nom, 1 ) BETWEEN 'C' AND 'Z'
ORDER BY nom ASC
ca marche :D


 
i'm boulay


Message édité par Profil supprimé le 11-02-2005 à 14:50:58
n°978729
freed102
Arayashiki
Posté le 11-02-2005 à 14:51:48  profilanswer
 

And the winner is :
 
$sql="SELECT * FROM claimsi WHERE nom >= '$nom' ORDER BY nom ";
 

n°978730
freed102
Arayashiki
Posté le 11-02-2005 à 14:52:26  profilanswer
 

thanx Rompi ! (et merci à tous les autres aussi ! :) )

n°978747
simogeo
j'ai jamais tué de chats, ...
Posté le 11-02-2005 à 14:58:44  profilanswer
 

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 [:franck75]
 
 

rompi a écrit :

J'aurai dit  
select¨* from table
where prenom >= 'c'
order by prenom


 
a ui ... on est trop con  :sweat:  
edit : en même temps ... c bien cheloud  ....  [:southpark1]  
 

rompi a écrit :


Pour ce qui est du  REGEXP '(%C|%D|%E|...);' et CIE,
A EVITER car totalement inutile  :sweat:  
 
Le % ne sert pas est bouffe de la ressource
Je pense que pour les majuscules,
ya pas d'problème


 
uiui ... nan mais j'ai pas dis que c'tait la syntaxe heinnn :o.. j'ai juste balancé une piste [:veryfree]
 

chacal_one333 a écrit :

faut rajouter un + pour que ca prenne plusieur caratère :o


 
mais ué quoi [:icon8]
 
[:dawacube]


Message édité par simogeo le 11-02-2005 à 14:59:36

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°978776
freed102
Arayashiki
Posté le 11-02-2005 à 15:17:03  profilanswer
 

simogeo a écrit :


edit : en même temps ... c bien cheloud  ....  [:southpark1]  


 
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


Message édité par freed102 le 11-02-2005 à 15:20:00
n°978812
simogeo
j'ai jamais tué de chats, ...
Posté le 11-02-2005 à 15:26:37  profilanswer
 

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 :o ) Je serais curieux de savoir si c'est standard en SQL


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°978825
rompi
Posté le 11-02-2005 à 15:29:20  profilanswer
 

Je suis d'accord, je ne suis pas certain que cela fasse parti d'une des normes de SQL

n°978835
simogeo
j'ai jamais tué de chats, ...
Posté le 11-02-2005 à 15:33:09  profilanswer
 

[:romf]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°978852
freed102
Arayashiki
Posté le 11-02-2005 à 15:37:10  profilanswer
 

ah okok ! autant pour moi ! :jap:
 
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 ?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Requete SQL

 

Sujets relatifs
probleme de test sur une valeur sortie d'une requete SQLrequête SQL dans value d'une zone texte?
[SQL] UPDATE dans une requete SELECT ?[SQL] problème complexe de requête
[SQL] Requete , where avec plusieurs conditions[Resolu] JDBC => Requete SQL (Delete)
SQL(server) optimisation d'une requête[VB6] Requète SQL (LIKE)
Colonne dynamique dans une requête [SQL Server 2000 - Transact SQL]requete sql probleme avec accent é
Plus de sujets relatifs à : Requete SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR