Besoin d'aide sur un script SQL de recherche
Bonjour,
Je suis sur le developpement d'un site web qui references des documents (titre, resume, mot cle, thesaurus,...) et j'ai recuperé des script un peu partout pour realiser cette requete. Mes objectifs sont multiples :
1) Eviter la case et les accents
2) Recherche dans les tables de correspondance mot cle et thesaurus
3) Classer par date (champ datedoc)
4) Prendre uniquement les references entre le numéro a et le numéro b (un genre de limite, mais je sais pas ou le mettre)
5) Eviter les doublon.
8O C'est beaucoup je sais, mais si je pouvais m'en approcher un maximum se serai le paradis ici :wink:
Voici la requete que je genère pour la recherche du mot toto :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
select documentsactifs.numdoc from documentsactifs where (to_ascii(documentsactifs.titre,'LATIN1') like '%toto%')
union
select documentsactifs.numdoc from documentsactifs where (to_ascii(documentsactifs.soustitre,'LATIN1') like '%toto%')
union
select documentsactifs.numdoc from documentsactifs where (to_ascii(documentsactifs.sujet,'LATIN1') like '%toto%')
union
select documentsactifs.numdoc from documentsactifs where (to_ascii(documentsactifs.resume,'LATIN1') like '%toto%')
union
select documentsactifs.numdoc from documentsactifs where (to_ascii(documentsactifs.notelibre,'LATIN1') like '%toto%')
union
select distinct t.numdoc
from documentsactifs t join correspond d on t.numdoc = d.numdoc
join motclelibre m on d.nummotcle = m.nummotcle
where m.nommotcle in ('toto')
group by t.numdoc
having count(*) >= 1
union
select distinct t.numdoc
from documentsactifs t join trouve d on t.numdoc = d.numdoc
join champthesaurus m on d.numchampthesaurus = m.numchampthesaurus
where m.terme in ('toto')
group by t.numdoc
having count(*) >= 1 |
Je suis sous postgres et ma base et codé en UNICODE.
Que dois je changer pour atteindre mes objectifs?
Merci