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 :

Comment construire ma requête ? [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Comment construire ma requête ?
    Bonjour,

    J'ai la structure suivante :



    Je voudrais afficher le nombre d'observations de chaque sous-catégorie (tbl_categories_sous.CategorieSous) d'une catégorie donnée (tbl_observations.Categorie) où la date de visite/contact est comprise entre '01/01/2010' et '31/12/2010' (tbl_contacts.JourContact ou tbl_visites.Jour).

    Le problème c'est que lorsque je mets une liaison de tbl_visites et tbl_contacts vers tbl_observations, je n'ai plus de résultats...

    Savez-vous comment je peux faire ?

    Merci,
    ZiP

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Bonjour,

    Si je comprends bien l'observation est liée à une visite OU un contact alors qu'avec des liens il fait un ET
    Une solution : faire une première requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select .... observation inner visite ....
    union all 
    select .... observation inner contact ....
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select categoriesous, count(*) from marequete where ....
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    J'ai donc créé deux requêtes, une pour les contacts et l'autre pour les visites.

    Je veux regrouper les résultats de ces deux requêtes.

    J'ai donc commencé à réaliser la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT a.CategorieSous, a.CompteDeCategorieSous AS Compteur
    FROM [SELECT CategorieSous, CompteDeCategorieSous FROM qry_nombre_d_observations_par_categorie_contacts UNION ALL SELECT CategorieSous, CompteDeCategorieSous FROM qry_nombre_d_observations_par_categorie_visites]. AS a;
    Mais lorsque je veux faire un GROUP BY, je n'ai pas d'erreur mais le résultat de la requête n'est pas bon (la valeur de compteur n'est pas la somme des des compteurs de chaque requête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT a.CategorieSous, COUNT(a.CompteDeCategorieSous) AS Compteur
    FROM [SELECT CategorieSous, CompteDeCategorieSous FROM qry_nombre_d_observations_par_categorie_contacts UNION ALL SELECT CategorieSous, CompteDeCategorieSous FROM qry_nombre_d_observations_par_categorie_visites]. AS a GROUP BY a.CategorieSous;
    Merci pour votre aide,
    ZiP

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Est ce qu'une observation peut avoir une visite ET un contact ?
    Si oui il faut en tenir compte dans l'union (prendre toutes les observations avec visite union celles avec contact sans visite)

    D'autre part je préfère faire d'abord une requete union et ensuite un simple count sur cette requete, cela permet de vérifier que la 1ere requete remonte les bonnes lignes avant de faire l'agrégat...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Est ce qu'une observation peut avoir une visite ET un contact ?
    Non, c'est soit une visite, soit un contact.

    C'est pourquoi j'ai fais deux requêtes :
    • qry_nombre_d_observations_par_categorie_visites
    • qry_nombre_d_observations_par_categorie_contacts


    Ensuite, je fais l'union de ces deux requêtes, je regroupe par sous-catégorie et je compte.

    D'autre part je préfère faire d'abord une requete union et ensuite un simple count sur cette requete, cela permet de vérifier que la 1ere requete remonte les bonnes lignes avant de faire l'agrégat...
    Je vais donc découper ma dernière requête en deux afin de séparer l'union du comptage. Peut-être aurais-je dans ce cas, un résultat cohérent et juste !

    Merci,
    ZiP

  6. #6
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour nico84,

    Ça fonctionne avec ta méthode !

    Merci,
    ZiP

  7. #7
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Normalement le découpage ne change rien au résultat, mais il permet d'avoir les idées plus claires et donc de faciliter l'écriture de la requete...

    En réalité une seule requete à 2 étages (select...from (select...)) marche aussi
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

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

Discussions similaires

  1. Comment construire la requête where In
    Par ziemelitis dans le forum Doctrine2
    Réponses: 2
    Dernier message: 04/01/2012, 09h39
  2. [AC-2000] Comment construire la requête ?
    Par 810mcu dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/08/2010, 14h35
  3. [AC-2003] Comment construire une double requête ?
    Par [ZiP] dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/02/2010, 11h42
  4. [SQL] Comment construire une requête filtrant les données ?
    Par glasgow dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2008, 14h57

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