8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une table contenant des valeurs, auxquelles sont rattachées des lettres-clés.

Par exemple :

Nom Lettre1 Lettre2
TOUT EFFEIL T E
ARC DE TRIOMPHE A T

J'essaie de construire une requete qui m'afficherai toutes lettres référencées de manière unique, mais je cale.

Pour la lettre1 ça va ...

SELECT DISTINCT letter1 FROM $table ";


... mais comment intégrer la 2e lettre dans ma requete, sans qu'il y ait de doublons ?

Merci pour votre aide,
Yannick
Modifié par okbertrand (14 Dec 2009 - 16:15)
Heu déjà avec la lettre 1 tu risques des doublons non ? je suppose que tu ne vas pas avoir qu'un seul mot qui commence par T...

Tout dépend de ce que tu veux comme infos dans ta base mais à mon avis ta table n'est pas bien construite.
L'idéal est quand même un champs d'id auto-incrémenté pour chaque table ainsi dans ta recherche tu te base sur l'id unique ET ensuite tu recherches tes deux lettres. Peut importe si elles sont en double donc.
Merci à vous.

Pour entrer dans les détails, je cherche à obtenir un résultat qui renverrai la valeur de la lettre récupérée.

J'ai donc une liste de projets dans une table à qui j'associe des lettres-clés pour ensuite faire une requête alphabétique.

Dans mon exemple, je cherche à afficher les lettres utilisées pour lancer une requête (qui se trouve sous la forme d'un menu).

En gros, ça va ressembler à :
A - B - C - ... - Z

où chaque lettre est cliquable pour lister les projets correspondants.

Mais je cherche d'abord à voir si la lettre existe dans la table, d'où ma question.

En langage scolaire, je dirais : je veux lister toutes les lettres présentes dans les champs lettre1 et lettre2 en affichant une seule fois cette dernière.

Est-ce que cela vous éclaire ?

Merci encore,
Yannic
Bonjour,

A la volée, je ferais un "SELECT DISTINCT lettre1 FROM table UNION SELECT DISTINCT lettre2 FROM table ORDER BY 1 ASC"
En y repensant, dans la mesure où le UNION ne retourne pas de doublons, tu n'as pas besoin du DISTINCT. Mais l'utilisation du DISTINCT devrait améliorer le temps d'exécution de la requête.
Le ORDER BY 1 te permet de trier sur le premier champ, sans avoir à mentionner son nom. Tu peux aussi faire un ORDER BY lettre1 si tu veux. C'est kif kif.