OVH Cloud OVH Cloud

Extraction alphabétique

3 réponses
Avatar
lo
Bonjour,

Voilà je recherche à construire une requete sql qui me permette d'extraire
d'une table la première entrée de chaque lettre alphabétique par apport à un
champ.

Par exemple, si j'ai une table contact, je voudrais extraire le premier
contact pour chaque lettre (M. Aaron, Mme Babe, M. Cabi...).

La requête suivante permet de sortir le premier... mais pour juste 1 lettre
(ici 'a') :
SELECT TOP 1 t_Contact.contact
FROM t_Contact
WHERE t_Contact.contactLIKE N'a%'

Merci d'avance pour ce casse tête.

3 réponses

Avatar
AXL
Bon ma requete c'est pas la joie mais c'est un debut et ca fonctionne

select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'A%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'B%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'C%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'D%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'E%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'F%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'G%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'H%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'I%'
union
select top 1 t_Contact.contact from t_Contact where upper(t_Contact.contact)
like 'J%'


"lo" a écrit dans le message de
news:bn9i7d$601$
Bonjour,

Voilà je recherche à construire une requete sql qui me permette d'extraire
d'une table la première entrée de chaque lettre alphabétique par apport à


un
champ.

Par exemple, si j'ai une table contact, je voudrais extraire le premier
contact pour chaque lettre (M. Aaron, Mme Babe, M. Cabi...).

La requête suivante permet de sortir le premier... mais pour juste 1


lettre
(ici 'a') :
SELECT TOP 1 t_Contact.contact
FROM t_Contact
WHERE t_Contact.contactLIKE N'a%'

Merci d'avance pour ce casse tête.





Avatar
Fred BROUARD
1) Faire une table contenant les lettres de l'alphabet
Par exemple :
CREATE TABLE T_ALPHABET_ALB
(ALB_LETTRE CHAR(1) NOT NULL PRIMARY KEY)

2) Y insérer toutes les lettres de a à z
INSERT INTO T_ALPHABET_ALB VALUES ('a')
...
INSERT INTO T_ALPHABET_ALB VALUES ('z')

3) faire la requête suivante :
SELECT MIN(CONTACT)
FROM T_CONTACT CTC
INNER JOIN T_ALPHABET_ALB ALB
ON UPPER(SUBSTRING(CONTACT, 1, 1) = UPPER(LETTRE)
GROUP BY LETTRE

A +

lo a écrit:
Bonjour,

Voilà je recherche à construire une requete sql qui me permette d'extraire
d'une table la première entrée de chaque lettre alphabétique par apport à un
champ.

Par exemple, si j'ai une table contact, je voudrais extraire le premier
contact pour chaque lettre (M. Aaron, Mme Babe, M. Cabi...).

La requête suivante permet de sortir le premier... mais pour juste 1 lettre
(ici 'a') :
SELECT TOP 1 t_Contact.contact
FROM t_Contact
WHERE t_Contact.contactLIKE N'a%'

Merci d'avance pour ce casse tête.






--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Avatar
Daniel Carollo
Bonjour lo!

Ne serais-ce pas plus simple de faire un regroupement sur la premiere lettre
d'abord?

Du genre:
SELECT au_lname from authors where
au_id in (select Max(au_id) FROM authors group by Left(au_lname, 1))
ORDER BY au_lnameSELECT au_lname from authors where

S'il n'y a personne avec une certaine lettre, alors cette lettre ne sort
pas.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"lo" wrote in message
news:bn9i7d$601$
Bonjour,

Voilà je recherche à construire une requete sql qui me permette d'extraire
d'une table la première entrée de chaque lettre alphabétique par apport à


un
champ.

Par exemple, si j'ai une table contact, je voudrais extraire le premier
contact pour chaque lettre (M. Aaron, Mme Babe, M. Cabi...).

La requête suivante permet de sortir le premier... mais pour juste 1


lettre
(ici 'a') :
SELECT TOP 1 t_Contact.contact
FROM t_Contact
WHERE t_Contact.contactLIKE N'a%'

Merci d'avance pour ce casse tête.