IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Requête sur une partie de texte et calcul [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut Requête sur une partie de texte et calcul
    Bonjour,

    Je dois effectuer une requête un peu complexe à mettre en oeuvre.

    Je suis dans la vente de magazine.

    Je dois ressortir les ventes du mois de sept, oct et nov 2011 pour lancer un courriel au client pour lui dire que son abonnement va prendre fin.

    Il y a des magazine qui ne sont vendue que 3 mois, 6 mois, 1 an, 2 ans et 3 ans.

    Je ne dois ressortir que celle d'il y a 1 an.

    Dans la base, 3 tables sont nécessaires.
    Archives (titrepublication, info sur le client)
    TblPublication (titre, periodicite)
    TblTarifPublication (refPublication, duree)

    les tblPublication et TblTarifPublication sont relié par le NoRefPublication

    Periodicité et durée sont des textes.
    Periodicité est écrites sous la forme = 52 FOIS/AN, 8 FOIS/AN 46+8 FOIS/AN, etc...
    Durée est ecrites sous forme = 52 NUMÉROS (1 AN), 14 NUMÉROS, etc...
    un exemple un peu complexe =
    Publication 1 = periodicité (52 FOIS/AN), et sa durée = 26 NUMEROS = ce qui correspond que c'est une publication de 6 mois et non 1 an.
    Dans cet exemple, 26/52 = 0,5 donc pas bon pour mes résultats.

    Une piste, il faudrait que je récupère dans une requête, que ceux qui correspond à un chiffre (dans l'exemple, ne donner que 52 et 26), ensuite faire une formule mathématique qui prend les 2 nombres, les divise et s'ils donnent un résultat de 1 alors le récupérer, pour le reste, les laisser de côté.

    Je récupère déja les ventes pour ceux où le mot (1 AN) s'y trouvent, mais ça me donne encore trop de résultat. D'après mon supérieur, je devrais avoir entre 1500 et 2000 résultats, et pour le moment, je suis à 8000...

    Est-il possible de faire ressortir des nombres d'une requête, (il existe le gauche et récupérer X parties, mais comme il y en a des 8 et même des 108, je ne peux pas lui faire ressortir les 3 premiers caractères).
    Comme les données sont au format texte, est-il possible de faire des calculs.

    Faut-il faire une sous-requête ?

    Merci beaucoup à vous !

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut
    je suis bloqué à l'extraction de caractères, pourtant je pense déjà avoir un début.

    J'ai testé sur excel et avec une fonction matricielle, il me ressort que les nombres dans une colonne texte.

    Je l'ai mis au goût de Access (avec plus ou mois de mal car fallait trouver les équivalences access/ excel).

    La requête SQL est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tbltarifspublications.duree, 1*Mid([Duree],DLookUp(True,IsNumeric(1*Mid([Duree],1)),0),Count(1*Mid([Duree],1))) AS recup
    FROM tbltarifspublications;
    mais j'ai un message d'erreur lors de son exécution :
    "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée duree comme une partie de la fonction d'agrégat. (Erreur 3122)"

    Pourtant la table contient bien ce nom. Je sens que je suis proche.

    De cette requête, j'execute la même chose sur l'autre table , je fais un rapprochement des résultats, s'il trouve 1 alors il affiche la ligne.

  3. #3
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour Ambact.
    Je pense que le plus simple est de rajouter un champ numérique dans ta table TblPublication .Avec une requete Maj (si = 52 NUMÉROS (1 AN), update MonChamp=12),celà sera beaucoup moins prise de tete!
    Cdlt

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut
    salut Thierry,

    Merci de ta réponse,

    Effectivement, je pourrais créer une colonne dans cette table, mais cette table est utilisé dans toutes les bases de données et même celle sur Internet pour le site Web. Toute modifications apportées à 2 tables importantes (dont celle-ci) doit se faire par le gérant de la société.

    Pour effectuer le travail que je dois finir demain, j'ai crée une nouvelle table où j'ai récupéré que les nombres dans les colonnes des durées et périodicité. Ensuite, j'ai crée une requête qui récupère les infos des clients, et cette table nouvellement crée, où il m'affiche que les données où durée est égale au chiffre de la périodicité.

    J'espère que ça me sort les bonnes infos mais d'après le gérant, le chiffre qui ressort pourrait coïncider avec la vérité.

    Il y a une chose que je ne vois pas encore trop comment faire est de retirer de la liste, les clients qui ont acheté 2 abonnements du même magazine dont sa durée est de 1 an. (C'est à dire que le client a pris un réabonnement de 1 an supplémentaire), ce client ne devrait donc pas recevoir un courriel pour lui signifier la fin de son abonnement vu qu'il y en a un autre qui recommence après.

    Il faudrait que j'enlève les lignes dont le titre, le nom, prénom coïncident parfaitement.

  5. #5
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Pour effectuer le travail que je dois finir demain, j'ai crée une nouvelle table
    C'est ce qu'il y avait de mieux (système D).

    Pour le reste,difficile de répondre sans voir la base ,et je ne suis pas un pro !
    Essaie de faire une première requete des gens qui n'ont pas réabonné sur une parution (donc sans doublons), et sert toi de cette requete comme source pour ta requete . A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [9.2] Optimisation de requêtes avec une partie "plein texte"
    Par gorgonite dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/01/2014, 13h33
  2. Requête sur une partie de la date
    Par Wise_Sherkaan dans le forum SQL
    Réponses: 7
    Dernier message: 13/01/2011, 16h40
  3. [MySQL] Requête sur une partie d'un champ
    Par Micaunprobzo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/09/2007, 16h28
  4. affichage requète sur une partie de l'écran
    Par cbleas dans le forum Access
    Réponses: 4
    Dernier message: 29/06/2007, 23h07
  5. Requête sur une partie d'un champ
    Par KEROZEN dans le forum Access
    Réponses: 4
    Dernier message: 26/03/2006, 20h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo