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 MySQL Discussion :

compter le nombre d'enregistrements dans une requete sql


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Novembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur étude et développement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 125
    Points : 55
    Points
    55
    Par défaut compter le nombre d'enregistrements dans une requete sql
    Bonjour,
    Je viens vers vous car j'ai un problème avec une requête. Je développe un site multilingue et ce que j'aimerais faire, c'est compter le nombre d'offres associées à un domaine donné en fonction de la langue. Ma requête est comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public function getDomainesDetails($langCode, $isObject= true){
    		 $sql = "SELECT 	{$this->alias}.`domaineId` as id, 
    							{$this->alias}.`domaineParentId` as parent, 
    							{$this->alias}.`domaineDateCreation`, 
    							{$this->alias}.`domaineDateModif`, 
    							dt.`domaineTextId`, 
    							dt.`domaineId`, 
    							dt.`langCode`, 
    							dt.`domaineTitre` as name, 
    							dt.`domaineMetaTitle`, 
    							dt.`domaineMetaKeywords`, 
    							dt.`domaineMetaDescription`, 
    							dt.`domaineAliasUrl`,
    							(SELECT COUNT(offreId) FROM recrutement_offre o WHERE o.`domaineId` = {$this->alias}.`domaineId` AND dt.langCode = '{$langCode}' AND o.`offreActive` = 1 ) as nbOffres
    				FROM	`{$this->table}` {$this->alias}
    				INNER JOIN `recrutement_domaine_text` dt ON {$this->alias}.`domaineId` = dt.`domaineId` 
    				LEFT JOIN `thermidor_language` l ON  dt.`langCode` = l.`langCode`
    				WHERE dt.langCode = '{$langCode}'
    		";
     
    		if($results = Database::execute_sql($sql))
    			return $this->parseResults($results, $isObject);
     
    	}
    Mon problème, c'est que cette requête m'affiche bien tous les domaines, par contre elle ne donne pas le nombre d'offres dans une langue donnée, elle me donne le nombre de toutes les offres.
    Le problème de cette requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (SELECT COUNT(offreId) FROM recrutement_offre o WHERE o.`domaineId` = {$this->alias}.`domaineId` AND dt.langCode = '{$langCode}' AND o.`offreActive` = 1 ) as nbOffres
    Merci d'avance pour votre aide

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 032
    Points : 23 764
    Points
    23 764
    Par défaut
    Bonjour,

    Pour optimiser vos chances d'obtenir une réponse pertinente sur un forum dédié au SQL et à MySQL, il serait préférable de remplacer vos variables ($this...) par leur contenu, et nous fournir votre modèle de données. Un petit jeu de données et le résultat attendu ne seraient pas de trop non plus...
    Pour l'instant, il me semble que la sous-requête est inutile, et remplaçable par une requête avec un COUNT et un GROUP BY bien établi.
    Mais ça serait plus simple avec les vrais noms des tables et le modèle de données...
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Novembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur étude et développement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 125
    Points : 55
    Points
    55
    Par défaut
    Merci pour votre réponse,
    je viens de trouver le problème de ma requête, je l'ai reformulé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT r.`domaineId` as id, r.`domaineParentId` as parent, r.`domaineDateCreation`, r.`domaineDateModif`, dt.`domaineTextId`
    , dt.`domaineId`, dt.`langCode`, dt.`domaineTitre` as name, dt.`domaineMetaTitle`, dt.`domaineMetaKeywords`, dt.`domaineMetaDescription`, dt.`domaineAliasUrl`
    , ( 
        SELECT COUNT(o.offreId) 
        FROM recrutement_offre o 
        INNER JOIN recrutement_offre_text rot ON o.offreId = rot.offreId AND rot.langCode = 'fr' 
        WHERE o.`domaineId` = r.`domaineId` AND o.`offreActive` = 1 
    ) as nbOffres 
    FROM `recrutement_domaine` r 
    INNER JOIN `recrutement_domaine_text` dt ON r.`domaineId` = dt.`domaineId` 
    LEFT JOIN `thermidor_language` l ON dt.`langCode` = l.`langCode` 
    WHERE dt.langCode = 'fr'
    Et j'ai eu le résultat voulu.

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

Discussions similaires

  1. [AC-2007] Compter le nombre d'enregistrements dans une table
    Par Furiuos dans le forum Access
    Réponses: 8
    Dernier message: 17/07/2009, 13h16
  2. Compter le nombre d'enregistrements dans une table
    Par youhibadelphi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 24/06/2009, 20h30
  3. Réponses: 4
    Dernier message: 24/11/2008, 09h43
  4. Compter le nombre d'enregistrement dans une table selon un critere
    Par Angelo91 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 18/08/2008, 12h05
  5. compter enregistrement dans une requete sql avec UNION
    Par dbzzzde dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2007, 10h43

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