$requete = $requete = "select ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid where RSOCIALE like '%$filtre%'";
Avec cette requète je limite la recherche sur RSOCIALE. Comment faire pour que tous les champs de la table soient pris en compte?
J'ai essayé avec "...where * like '%$filtre%'"; mais cela fonctionne pas.
Pendant que j'y suis comment aussi spécifier plusieurs champs?
Merci d'avance pour tous renseignements.
Bon weekend à tous
Otto
Bonjour,
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ...
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
-- Philippe
Otto
In article <41fcddf7$0$27956$, Ph. B. wrote:
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ....
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
Bonjour Philippe,
Merci pour ton aide, j'ai utilisé la variate suivante qui fonctionne très bien:
$requete = "select ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid where RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' OR RESP LIKE '%$filtre%' OR RUE LIKE '%$filtre%' OR NP LIKE '%$filtre%' OR VILLAGE LIKE '%$filtre%' OR TEL LIKE '%$filtre%'";
Bon weekend
Otto
In article <41fcddf7$0$27956$636a15ce@news.free.fr>, Ph. B. wrote:
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux
écrire:
WHERE RSOCIALE LIKE '%$filtre%'
OR COMMERCE LIKE '%$filtre%'
....
A moins que tu ne veuilles agréger toutes tes colonnes ?
Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
Bonjour Philippe,
Merci pour ton aide, j'ai utilisé la variate suivante qui fonctionne très
bien:
$requete = "select ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid
where RSOCIALE LIKE '%$filtre%'
OR COMMERCE LIKE '%$filtre%'
OR RESP LIKE '%$filtre%'
OR RUE LIKE '%$filtre%'
OR NP LIKE '%$filtre%'
OR VILLAGE LIKE '%$filtre%'
OR TEL LIKE '%$filtre%'";
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ....
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
Bonjour Philippe,
Merci pour ton aide, j'ai utilisé la variate suivante qui fonctionne très bien:
$requete = "select ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid where RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' OR RESP LIKE '%$filtre%' OR RUE LIKE '%$filtre%' OR NP LIKE '%$filtre%' OR VILLAGE LIKE '%$filtre%' OR TEL LIKE '%$filtre%'";
Bon weekend
Otto
Ph. B.
Otto wrote:
In article <41fcddf7$0$27956$, Ph. B. wrote:
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ....
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas le "+" avec ton SGBD (MySql ?)...
-- Philippe
Otto wrote:
In article <41fcddf7$0$27956$636a15ce@news.free.fr>, Ph. B. wrote:
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux
écrire:
WHERE RSOCIALE LIKE '%$filtre%'
OR COMMERCE LIKE '%$filtre%'
....
A moins que tu ne veuilles agréger toutes tes colonnes ?
Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas
le "+" avec ton SGBD (MySql ?)...
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ....
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas le "+" avec ton SGBD (MySql ?)...
-- Philippe
Daniel
"Ph. B." writes:
Otto wrote:
> In article <41fcddf7$0$27956$, Ph. B. wrote: > >> Je ne suis sur pas d'avoir compris le sens de ta question mais tu >> peux écrire: >> >>WHERE RSOCIALE LIKE '%$filtre%' >>OR COMMERCE LIKE '%$filtre%' >>.... >> >>A moins que tu ne veuilles agréger toutes tes colonnes ? >>Si elles sont du même type: >> >>WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%' >>
> Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas le "+" avec ton SGBD (MySql ?)...
c'est le cas de l'opérateur de concaténation sous mysql . Parcontre j'ai un sérieux doute sur l'efficacité de la requête, car le like n'utilise pas les index ;-(
-- suivre ce lien pour répondre: http://cerbermail.com/?2KrV3YZXnn Daniel ;-)
> In article <41fcddf7$0$27956$636a15ce@news.free.fr>, Ph. B. wrote:
>
>> Je ne suis sur pas d'avoir compris le sens de ta question mais tu
>> peux écrire:
>>
>>WHERE RSOCIALE LIKE '%$filtre%'
>>OR COMMERCE LIKE '%$filtre%'
>>....
>>
>>A moins que tu ne veuilles agréger toutes tes colonnes ?
>>Si elles sont du même type:
>>
>>WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
>>
> Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre
pas le "+" avec ton SGBD (MySql ?)...
c'est le cas de l'opérateur de concaténation sous mysql . Parcontre
j'ai un sérieux doute sur l'efficacité de la requête, car le like
n'utilise pas les index ;-(
--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
> In article <41fcddf7$0$27956$, Ph. B. wrote: > >> Je ne suis sur pas d'avoir compris le sens de ta question mais tu >> peux écrire: >> >>WHERE RSOCIALE LIKE '%$filtre%' >>OR COMMERCE LIKE '%$filtre%' >>.... >> >>A moins que tu ne veuilles agréger toutes tes colonnes ? >>Si elles sont du même type: >> >>WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%' >>
> Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas le "+" avec ton SGBD (MySql ?)...
c'est le cas de l'opérateur de concaténation sous mysql . Parcontre j'ai un sérieux doute sur l'efficacité de la requête, car le like n'utilise pas les index ;-(
-- suivre ce lien pour répondre: http://cerbermail.com/?2KrV3YZXnn Daniel ;-)
Ph. B.
Daniel wrote:
"Ph. B." writes:
Otto wrote:
In article <41fcddf7$0$27956$, Ph. B. wrote:
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ....
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas le "+" avec ton SGBD (MySql ?)...
c'est le cas de l'opérateur de concaténation sous mysql . Parcontre j'ai un sérieux doute sur l'efficacité de la requête, car le like n'utilise pas les index ;-(
En effet, je ne doute pas de l'(in)efficacité d'une requête de ce type ! ;-) Un LIKE est par nature non performant, de plus on réalise une clause de filtre sur une concaténation de colonnes ! :-(
J'ai juste apporté une réponse à une question donnée. Il faudrait connaitre le modèle de données, définir ce qui est exactement voulu pour fournir une solution plus adéquate...
In article <41fcddf7$0$27956$636a15ce@news.free.fr>, Ph. B. wrote:
Je ne suis sur pas d'avoir compris le sens de ta question mais tu
peux écrire:
WHERE RSOCIALE LIKE '%$filtre%'
OR COMMERCE LIKE '%$filtre%'
....
A moins que tu ne veuilles agréger toutes tes colonnes ?
Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre
pas le "+" avec ton SGBD (MySql ?)...
c'est le cas de l'opérateur de concaténation sous mysql . Parcontre
j'ai un sérieux doute sur l'efficacité de la requête, car le like
n'utilise pas les index ;-(
En effet, je ne doute pas de l'(in)efficacité d'une requête de ce type ! ;-)
Un LIKE est par nature non performant, de plus on réalise une clause de
filtre sur une concaténation de colonnes ! :-(
J'ai juste apporté une réponse à une question donnée. Il faudrait
connaitre le modèle de données, définir ce qui est exactement voulu pour
fournir une solution plus adéquate...
Je ne suis sur pas d'avoir compris le sens de ta question mais tu peux écrire:
WHERE RSOCIALE LIKE '%$filtre%' OR COMMERCE LIKE '%$filtre%' ....
A moins que tu ne veuilles agréger toutes tes colonnes ? Si elles sont du même type:
WHERE (RSOCIALE + COMMERCE + RESP + RUE + NP + VILLAGE) LIKE '%$filtre%'
Ne fonctionne pas pourtant tous les champs sont du type varchar!
AMHA, cela vient de l'opérateur de concaténation qui n'est peut-etre pas le "+" avec ton SGBD (MySql ?)...
c'est le cas de l'opérateur de concaténation sous mysql . Parcontre j'ai un sérieux doute sur l'efficacité de la requête, car le like n'utilise pas les index ;-(
En effet, je ne doute pas de l'(in)efficacité d'une requête de ce type ! ;-) Un LIKE est par nature non performant, de plus on réalise une clause de filtre sur une concaténation de colonnes ! :-(
J'ai juste apporté une réponse à une question donnée. Il faudrait connaitre le modèle de données, définir ce qui est exactement voulu pour fournir une solution plus adéquate...
-- Philippe.
loufoque
Otto a dit le 30/01/2005 14:01:
J'utilise le select suivant pour une recherche:
$requete = $requete = "select ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid where RSOCIALE like '%$filtre%'";
Avec cette requète je limite la recherche sur RSOCIALE. Comment faire pour que tous les champs de la table soient pris en compte?
Mieux vaut faire un FULLTEXT index sur l'ensemble des champs. Bien plus puissant et performant.
Otto a dit le 30/01/2005 14:01:
J'utilise le select suivant pour une recherche:
$requete = $requete = "select
ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid where
RSOCIALE like '%$filtre%'";
Avec cette requète je limite la recherche sur RSOCIALE.
Comment faire pour que tous les champs de la table soient
pris en compte?
Mieux vaut faire un FULLTEXT index sur l'ensemble des champs.
Bien plus puissant et performant.
$requete = $requete = "select ID,RSOCIALE,COMMERCE,RESP,RUE,NP,VILLAGE from fncid where RSOCIALE like '%$filtre%'";
Avec cette requète je limite la recherche sur RSOCIALE. Comment faire pour que tous les champs de la table soient pris en compte?
Mieux vaut faire un FULLTEXT index sur l'ensemble des champs. Bien plus puissant et performant.
Otto
In article <41fd59c0$0$1989$, Loufoque wrote:
Mieux vaut faire un FULLTEXT index sur l'ensemble des champs. Bien plus puissant et performant.
Cette table à env. 500 enregistrements et va rester dans cette ordre de grandeur. Je trouve que pour l'instant le temps de réponse est rapide. Je suis aussi interessé pour apprendre MySQL et comment utiliser ce FULLTEXT. Pourrais-tu à l'occasion me faire un petit exemple sur la base de mes champs.
Bonne journée et encore merci
Otto
In article <41fd59c0$0$1989$626a14ce@news.free.fr>, Loufoque
wrote:
Mieux vaut faire un FULLTEXT index sur l'ensemble des champs.
Bien plus puissant et performant.
Cette table à env. 500 enregistrements et va rester dans cette
ordre de grandeur.
Je trouve que pour l'instant le temps de réponse est rapide.
Je suis aussi interessé pour apprendre MySQL et comment
utiliser ce FULLTEXT.
Pourrais-tu à l'occasion me faire un petit exemple sur la base
de mes champs.
Mieux vaut faire un FULLTEXT index sur l'ensemble des champs. Bien plus puissant et performant.
Cette table à env. 500 enregistrements et va rester dans cette ordre de grandeur. Je trouve que pour l'instant le temps de réponse est rapide. Je suis aussi interessé pour apprendre MySQL et comment utiliser ce FULLTEXT. Pourrais-tu à l'occasion me faire un petit exemple sur la base de mes champs.
Bonne journée et encore merci
Otto
loufoque
Otto a dit le 31/01/2005 à 12h35:
Je suis aussi interessé pour apprendre MySQL et comment utiliser ce FULLTEXT.
Tu trouves tout dans la documentation http://dev.mysql.com/doc/mysql/en/fulltext-search.html
Otto a dit le 31/01/2005 à 12h35:
Je suis aussi interessé pour apprendre MySQL et comment
utiliser ce FULLTEXT.
Tu trouves tout dans la documentation
http://dev.mysql.com/doc/mysql/en/fulltext-search.html
Je suis aussi interessé pour apprendre MySQL et comment utiliser ce FULLTEXT.
Tu trouves tout dans la documentation http://dev.mysql.com/doc/mysql/en/fulltext-search.html
Bernard Le Lann
Bonjour Philippe,
J'utilise pas mal le LIKE sous mySQL aussi j'aimerais savoir comment (ou pourquoi) LIKE est par nature non performant.
Merci :->)
Bernard
| En effet, je ne doute pas de l'(in)efficacité d'une requête de ce type ! ;-) | Un LIKE est par nature non performant, de plus on réalise une clause de | filtre sur une concaténation de colonnes ! :-( |
Bonjour Philippe,
J'utilise pas mal le LIKE sous mySQL aussi j'aimerais savoir comment (ou
pourquoi) LIKE est par nature non performant.
Merci :->)
Bernard
| En effet, je ne doute pas de l'(in)efficacité d'une requête de ce type !
;-)
| Un LIKE est par nature non performant, de plus on réalise une clause de
| filtre sur une concaténation de colonnes ! :-(
|
J'utilise pas mal le LIKE sous mySQL aussi j'aimerais savoir comment (ou pourquoi) LIKE est par nature non performant.
Merci :->)
Bernard
| En effet, je ne doute pas de l'(in)efficacité d'une requête de ce type ! ;-) | Un LIKE est par nature non performant, de plus on réalise une clause de | filtre sur une concaténation de colonnes ! :-( |
Jacques Caron
On Wed, 2 Feb 2005 18:37:32 +0100, Bernard Le Lann wrote:
J'utilise pas mal le LIKE sous mySQL aussi j'aimerais savoir comment (ou pourquoi) LIKE est par nature non performant.
Parce qu'il ne peut pas utiliser d'index (sauf cas particuliers). Ainsi, si tu fais une requête du type:
SELECT * FROM table WHERE champ=X
et que tu as un index sur table(champ), alors cet index sera utilisé pour aller directement au(x) bon(s) enregistrements. Ca représente quelques blocs à lire sur disque au maximum (s'ils ne sont pas déjà en cache).
Si tu fais une requête du type:
SELECT * FROM table WHERE champ LIKE '%X%'
Alors le seul moyen pour le serveur SQL c'est de lire tous les enregistrements de la table un par un, regarder s'ils correspondent ou pas, et passer au suivant. Sur une table un tant soit peu importante, c'est nettement moins performant.
PostgreSQL sait utiliser un index pour une requête du type:
SELECT * FROM table WHERE champ LIKE 'X%'
(i.e. le champ doit absolument commencer par X)
Mais ce n'est pas valable pour un LIKE '%X' ou un '%X%'. Je suppose que c'est pareil pour MySQL.
Evidemment, si tu n'as pas d'index sur ta table, ça ne change pas grand chose (un chouïa de CPU quand même), mais là on ne peut plus rien pour toi ;->
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
On Wed, 2 Feb 2005 18:37:32 +0100, Bernard Le Lann
<bernard.lelann@tiscali.fr> wrote:
J'utilise pas mal le LIKE sous mySQL aussi j'aimerais savoir comment (ou
pourquoi) LIKE est par nature non performant.
Parce qu'il ne peut pas utiliser d'index (sauf cas particuliers). Ainsi,
si tu fais une requête du type:
SELECT * FROM table WHERE champ=X
et que tu as un index sur table(champ), alors cet index sera utilisé pour
aller directement au(x) bon(s) enregistrements. Ca représente quelques
blocs à lire sur disque au maximum (s'ils ne sont pas déjà en cache).
Si tu fais une requête du type:
SELECT * FROM table WHERE champ LIKE '%X%'
Alors le seul moyen pour le serveur SQL c'est de lire tous les
enregistrements de la table un par un, regarder s'ils correspondent ou
pas, et passer au suivant. Sur une table un tant soit peu importante,
c'est nettement moins performant.
PostgreSQL sait utiliser un index pour une requête du type:
SELECT * FROM table WHERE champ LIKE 'X%'
(i.e. le champ doit absolument commencer par X)
Mais ce n'est pas valable pour un LIKE '%X' ou un '%X%'. Je suppose que
c'est pareil pour MySQL.
Evidemment, si tu n'as pas d'index sur ta table, ça ne change pas grand
chose (un chouïa de CPU quand même), mais là on ne peut plus rien pour toi
;->
Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/
On Wed, 2 Feb 2005 18:37:32 +0100, Bernard Le Lann wrote:
J'utilise pas mal le LIKE sous mySQL aussi j'aimerais savoir comment (ou pourquoi) LIKE est par nature non performant.
Parce qu'il ne peut pas utiliser d'index (sauf cas particuliers). Ainsi, si tu fais une requête du type:
SELECT * FROM table WHERE champ=X
et que tu as un index sur table(champ), alors cet index sera utilisé pour aller directement au(x) bon(s) enregistrements. Ca représente quelques blocs à lire sur disque au maximum (s'ils ne sont pas déjà en cache).
Si tu fais une requête du type:
SELECT * FROM table WHERE champ LIKE '%X%'
Alors le seul moyen pour le serveur SQL c'est de lire tous les enregistrements de la table un par un, regarder s'ils correspondent ou pas, et passer au suivant. Sur une table un tant soit peu importante, c'est nettement moins performant.
PostgreSQL sait utiliser un index pour une requête du type:
SELECT * FROM table WHERE champ LIKE 'X%'
(i.e. le champ doit absolument commencer par X)
Mais ce n'est pas valable pour un LIKE '%X' ou un '%X%'. Je suppose que c'est pareil pour MySQL.
Evidemment, si tu n'as pas d'index sur ta table, ça ne change pas grand chose (un chouïa de CPU quand même), mais là on ne peut plus rien pour toi ;->
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/