Requette sql

Résolu
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 18 déc. 2004 à 18:22
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 20 déc. 2004 à 14:25
Salut tout le monde,

Voilà j'ai une table Films avec un Champ Catégories
Avec comme données ceci (ce n'est qu'un bout......)

Actions
Actions, Aventure
Annimés
Annimés, Jeunesse
Etc.......

j'applique une requette sql du type

Mycommand.CommandText = "SELECT DISTINCT Catégories  FROM Films Where Catégories " & _
         "Is Not Null Order By Catégories"


cette requette me resort tous les Actions, Annimés etc.....

je voudrais que la requette me sorte que le premier nom de la ligne ex:

Actions
Annimés
Western
etc......

donc repérer la virgule et si virgule il y a ne prendre que ce qui est devant et j'avoue que je pêche un peu donc si qqn à la soluce je suis preneur et tout ceci en VB.Net

Merci à ceux qui lirons ce topic et un double merci à celui qui me donneras la solution.

____________________________________________________

Cordialement, Jean-Paul

Le Savoir n'a de valeur que s'il est partagé

10 réponses

madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
19 déc. 2004 à 16:38
Pourquoi tu t'embêtes alors que ton modèle relationnel pourrait tout arranger ? et fini les embrouilles de traitement de chaine qui ne sont pas compatible d'un environnement à l'autre.

une jointure ça marche sur tout.

madbob
3
cs_caspal Messages postés 14 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 22 février 2006 1
18 déc. 2004 à 22:28
Salut,

Essaye ça :)

Mycommand.CommandText =
"SELECT IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])
FROM Films
GROUP BY IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])
HAVING (((IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])) Is Not Null))
ORDER BY IIf(InStr([Catégories],","),Left([Catégories],InStr([Catégories],',')-1),[Catégories]);"

CASPAL
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
18 déc. 2004 à 22:29
je suis pas sûr de pouvoir le faire en SQL parce que les valeurs à extraire de chaque chaine sont de longueur variable et je suis pas sûr nom plus que la fonction substr (SQL+ oracle) soit compatible... En plus elle ne reçoit en argument que des nombres pour spécifier le découpage.

Il faut modifier ton modèle de base de donnée en ajoutant une table
qui réference de manière unique les genres et qui relie les déclinaisons et là avec une jointure dans ta requete principale tu faits ce que tu veux.

madbob
0
cs_caspal Messages postés 14 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 22 février 2006 1
18 déc. 2004 à 22:31
Pardon, j'ai fais une petite erreur
essaye plutot ça

Mycommand.CommandText =
SELECT IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])
FROM Films
GROUP BY IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])
HAVING (((IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])) Is Not Null))
ORDER BY IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories]);

CASPAL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
18 déc. 2004 à 22:45
Oui bien sur Caspal avec instr...

Mais là ça serait pas plus simple ?

select distinct IIf(InStr([Catégories],','),Left([Catégories],InStr([Catégories],',')-1),[Catégories])
as Macat
from films where Macat is not null order by Macat

pour le group by je sais pas s'il est util

madbob
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
18 déc. 2004 à 23:45
Salut

Bon je vais de ce pas essayer ceci
faut que je change ce code car en VB.Net pas plus de left que de be.....re au c.....l

____________________________________________________

Cordialement, Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
19 déc. 2004 à 11:55
labout

il suffit de créer la fonction left
correspond à mid(var,1,n)
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
19 déc. 2004 à 14:54
Salut,

bon ça ne marche pas ........

En fait caspal ta requette fonctionne trés bien sous Access mais pas sous vb allez savoir pourquoi !!!!! access me rajoute juste un as expr1 avant le from bon .......j'ai testé avec ça sous vb idem il ne trouve aucun enregistrement
____________________________________________________

Cordialement, Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
loulax Messages postés 12 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 18 septembre 2005 1
20 déc. 2004 à 13:29
>:) loulax

Arrette de te faire chier avec tout sa, je suis d accord avec madbob remodelilse ta base de donnée pour faire en sorte d'avoir un champ qui ne comprend que une categorie et pas plusieurs. :shock)
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
20 déc. 2004 à 14:25
Salut

bon en fait voilà ce que j'ai fait
ma table Films se charge au traver d'internet sur AlloCiné
donc dans Mon champ Catégorie je receuille des infos du style

Action
Action, Aventure
Action,Drame
Comédie
Comédie, Dramatique
etc......

donc je garde ce Champ tel quel
J'ai rajouté une table Catégories avec un Champ Nom Catégorie

dans ce champ je récupère que le début de mon champ Films.Catégorie

je me sert de ce champ pour faire les tris sur ma base.

Ca m'a donné du boulot réécrire ma base mais bon c'est fait

merci quand même à vous tous pour le coup de main.

____________________________________________________

Cordialement, Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous