English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Toutes les catégories

normalement c comme ca : select * from base where champ1 ="abc" OR champs2 ="abc" OR champs3 ="abc".........
je veut svp une requete qui cherche dans tous les champs juste precisé le mot a chercher (dans notre exemple "abc");
merci d'avance

2007-03-23 03:09:23 · 7 réponses · demandé par Anis 1 dans Informatique et internet Programmation

7 réponses

pa spossible il te faut obligatoirment lister les champs dans laquelle tu veux faire ta recherche.
sorry
Sinon essaye

select * from 'base'
where 'abc' in (champ1, champ2, chmap3, ...);

2007-03-23 03:20:10 · answer #1 · answered by Anonymous · 0 0

Ce n'est pas possible, principalement parce que SQL est un langage fortement typé donc les opérateurs agissent différemment d'un type à l'autre.
Si ta base de données contient essentiellement du texte (sinon ta recherche citée plus haut n'a pas vraiment de sens) tu devrais envisager d'utiliser une base non-relationnelle, par exemple une base xml. Ou alors d'utiliser un outil externe pour l'indexation (par exemple Apache/Lucene) dans ce cas tu peux créer un index qui est indépendant des champs et répondra alors à la requête générale que tu souhaites faire.

2007-03-23 15:50:35 · answer #2 · answered by t_cordonnier 7 · 0 0

Ce n'est pas possible en une seule requête SQL.
Il faut faire du SQL Dynamique:
- rechercher la liste de colonnes de la table (dans la table system qui va bien - dba_tab_columns pour une base oracle)
- Contruire la chaine de caractère de ton SQL
'SELECT * FROM ma_table'
puis rajouter les comparaison sur les colonnes.

Si tu veux faire cette recherche dans toutes les tables de la base, il faut refaire cela pour chaque table (liste des tables dans un table system - dba_tables pour Oracle)

Attention, si ta base est tres grosse, ça va prendre la vie des rats!

2007-03-23 10:44:52 · answer #3 · answered by namaste 3 · 0 0

Le language SQL n'étant pas fait pour poser des questions tordues, soit tu reformules ta question, soit comme l'a dit Marko, tu inclus autant de OR que tu as de champs dans ta table.
Il y a cependant un moyen d'automatiser la saisie de ta requête si la table contient plus de 50 champs...
Auquel cas, ta table serait vraiment très mal conçue...

2007-03-23 10:24:08 · answer #4 · answered by Bruno L 3 · 0 0

demande aux agriculteurs c est eux qui on les champs

2007-03-23 10:24:07 · answer #5 · answered by Anonymous · 1 1

Je serrai curieux de connaitre la formule magique. parce que je ne crois pas qu'il est d'autre solution.

toujours est t'il que tu peut préciser quel SQL tu tu utilise :mySQL prosgreSQL msSQL sqlLite .... il ya des variante non négligeable des fois !

2007-03-23 10:17:24 · answer #6 · answered by Marco 2 · 0 0

c'est en sql ou pl-sql ??? SQL server ou Oracle.

Dans tous les cas, il faut s'appuyer sur les tables système pour balayer tous les champs de toutes les tables et ainsi les passer en paramètre.

Attention aux perf de ta requête, mais tu dois pouvoir trouver cela sur un site dédié au dev sur base de données.

2007-03-23 10:16:39 · answer #7 · answered by Yahoopseudo 5 · 0 0

fedest.com, questions and answers