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

SQL Firebird Discussion :

problème de requete


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut problème de requete
    Bonjour a tous
    j'ai un problème de comprehension avec certaine, mais voici je vous donne d'abord la strucutre de mes tables.
    je suis sous FIB 2.1.2

    j'ai 2 tables

    MAGAZIN(idmagazin, typemagazin, quartiermagazin, villemagazin)
    PRODUIT(idproduit, typroduit, Numeromagazin)

    la relation entre magazin et produit est de type 1;n (idmagazin, Numeromagazin)

    typemagazin peut prendre soit 'grossite' soit 'detaillant'
    typroduit peut prendre soit 'concurent' soit 'personnel'


    mes requetes a problème sont les suivantes:

    1. Nombre de grossistes vendant les type 'personnel' par produits
      Nombre de grossistes vendants les produits de type 'personnel'
      Taux de présence par ville pour les produit type 'personnel'.


    je vous assure que je suis vraiment coincé, j'ai besion d'aide

    Merci a tous

  2. #2
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    je viens d'essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  magazin.idmagazin, COUNT(magazin.idmagazin)
    FROM   magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE  (produit.typroduit = 'personel') AND magazin.tpmagazin='GROSSISTE'
    GROUP BY magazin.idmagazin
    et cette requete me donne tous les magazins qui vendent les produits de type personel.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    concernant le taux de préssence je pense qu'il s'agit d'un truc statistique si je ne trompe ?
    j'ai vraiment besoin d'aide please

  4. #4
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    en ajoutant ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT COUNT(*)
    from(
    SELECT  magazin.idmagazin
    FROM   magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE  (produit.typroduit = 'personel') AND magazin.tpmagazin='GROSSISTE'
    GROUP BY magazin.idmagazin)
    j'obtient je suppose le nombre de magazin qui vendent des produits de type 'personel'. a confrimer
    reste pour le taux de présence là variement je ne sais meme pas ou commencer

  5. #5
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par devalender Voir le message
    je viens d'essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  magazin.idmagazin, COUNT(magazin.idmagazin)
    FROM   magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE  (produit.typroduit = 'personel') AND magazin.tpmagazin='GROSSISTE'
    GROUP BY magazin.idmagazin
    et cette requete me donne tous les magazins qui vendent les produits de type personel.
    Donne le nombre de produit 'personel' par grossiste.

    Alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  produit.idproduit, COUNT(distinct magazin.idmagazin)
    FROM   magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE  (produit.typroduit = 'personel') AND magazin.tpmagazin='GROSSISTE'
    GROUP BY produit.idproduit
    donne le nombre de grossiste par produit de type 'personel'.

    Pour connaitre le nombre de grossiste vendant des produits de type personnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  COUNT(distinct magazin.idmagazin)
    FROM   magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE  (produit.typroduit = 'personel') AND magazin.tpmagazin='GROSSISTE'
    Apres pour le taux de présence dans une ville j'imagine que c'est le rapport entre le nombre de produit de type personnel par rapports aux nombre total de produit pour chaque ville ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  magazin.villemagazin, sum(case when produit.type ='personel' then 1 else 0 end) as nbr_produit_perso, (sum(case when produit.type ='personel' then 1 else 0 end)) / count(produit.idproduit) as taux_presence
    FROM   magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    GROUP BY magazin.villemagazin

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    Merci beaucoup Barbibulle
    j'essai tout ca et je vous met au courant
    merci

  7. #7
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    pour le taux de prensence

    Le taux de présence par produit se definit comme étant le nombre de magazin vendant les produits 'personnel' diviser par le nombre total de magazin maintenant je ne sais pas si c'est conforme a votre reponse.
    merci

  8. #8
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    Pour reponse
    Pour connaitre le nombre de grossiste vendant des produits de type personnel :

    Code :
    SELECT COUNT(DISTINCT magazin.idmagazin)
    FROM magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE (produit.typroduit = 'personel') AND magazin.tpmagazin='GROSSISTE'
    cette requete marche correctement

    SELECT magazin.villemagazin, sum(case when produit.type ='personel' then 1 else 0 end) AS nbr_produit_perso, (sum(case when produit.type ='personel' then 1 else 0 end)) / count(produit.idproduit) AS taux_presence
    FROM magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    GROUP BY magazin.villemagazin
    celle-ci marche mais ne repond pas a mon attente
    Le taux de présence par produit se definit comme étant le nombre de magazin vendant les produits 'personnel' diviser par le nombre total de magazin
    je ne suis pas encore sortir de la fournaise !

  9. #9
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    en cherchant un peu voici A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT(DISTINCT magazin.idmagazin)
    FROM magazin
    INNER JOIN Produit ON (magazin.idmagazin= produit.numeromagazin)
    WHERE (produit.typroduit = 'personel')
    cette requete me permet de recuperer tous les magazin qui vendent le produit 'personel'
    ensuite celle ci me permet de recuperer le nombre de tous les magazins B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select COUNT(*)
    from (select * from magazin)
    j'étais en train de me demander comment associer la ville a A et ensuite faire mon rapport A*100/B
    merci

  10. #10
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Dans ce cas c'est plutot un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select m.villemagazin, count(distinct p.numeromagazin) nbr_magasin_avec_produit_perso, count(distinct m.idmagazin) nbr_total_magasin_meme_ceux_sans_produits
    from magazinm
    left join Produit p on (p.numeromagazin = m.idmagazin) and (p.typroduit ='Personel')
    group by m.villemagazin
    Le premier count compte le nombre de magasin ayant des produits de type 'personel' et le second count compte le nombre total de magasin (même ceux qui n'ont pas de produits).

  11. #11
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    je suis vraiment ennuyé de vous déranger mais la comment je fais le rapport count(DISTINCT p.numeromagazin) nbr_magasin_avec_produit_perso *100/ count(DISTINCT m.idmagazin) nbr_total_magasin_meme_ceux_sans_produits
    merci pour tous

  12. #12
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    Je viens de comprendre cmment faire le rapport, mais j'ai un autre soucis
    Le premier count compte le nombre de magasin ayant des produits de type 'personel' et le second count compte le nombre total de magasin (même ceux qui n'ont pas de produits).
    lorsque je lance ma requete je me retrouve avec des erreurs
    du genre :
    Le premier count compte le nombre de magasin ayant des produits de type 'personel' > le second count compte le nombre total de magasin (même ceux qui n'ont pas de produits).

    le nombre total de magazin vendant le produit est supérieur au nombre total de magazin

  13. #13
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    count(DISTINCT p.numeromagazin) va compter toutes les occurences distinctes de magasin ayant un produit personel.

    Il ne peut être supérieur à count(DISTINCT m.idmagasin).

    Soit vous avez mal recopié soit quelque chose m'échappe

  14. #14
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 678
    Points : 953
    Points
    953
    Par défaut
    effectivement l'erreur vient de moi toutes mes excuses
    Merci énormement
    tout marche.

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

Discussions similaires

  1. [EJBQL] Problème de requete
    Par rivierem dans le forum Java EE
    Réponses: 3
    Dernier message: 16/10/2004, 10h05
  2. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  3. Problème de Requete...
    Par sebiv dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/04/2004, 16h21
  4. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54
  5. Problème de requete multis-selections
    Par tripper.dim dans le forum SQL
    Réponses: 9
    Dernier message: 03/09/2003, 13h08

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