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

Langage SQL Discussion :

Requête SQL avec 2 count


Sujet :

Langage SQL

  1. #21
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    mais est-ce que ce traitement sur la table de terms doit forcément être itératif ?

    A la base vous fait un update ? insert ?
    Développez un peu votre process car le problème de vos perfs vient de là

  2. #22
    Membre très actif Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Par défaut
    Oui, désolé...

    La table terms contient des mots du dictionnaire (environ 70 000)
    La table suggests contient des suggestions de recherche Google contenant le term

    Donc pour résumer:
    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
    SELECT t.id, t.term, 
    	count(CASE WHEN suggests.status = '0' THEN 1 END) AS nb_todo, 
    	count(CASE WHEN suggests.status = '1' THEN 1 END) AS nb_done 
    FROM terms t 
    	LEFT JOIN suggests ON (suggests.termid = t.id) 
    WHERE t.status = '0' 
    	GROUP BY t.id 
    	ORDER BY t.term ASC
     
    while($row_term = mysql_fetch_array($sql)) 
    {
       if($row_term['nb_todo']==0 && $row_term['nb_done']==0) 
       // Si aucune suggestion associée au term est trouver, alors on récupere les suggestions google 
       // associé au term et on fait un INSERT INTO FROM suggests ... 
     
       elseif($row_term['nb_todo'] > 0) 
       // Si plusieurs suggestions associées au term sont non traitées alors on continue
     
       elseif($row_term['nb_todo']==0 && $row_term['nb_done'] > 0)
       // Si aucune suggestion associées au term non traitée et plusieurs traitées alors on 
       // marque le term comme traité UPDATE FROM terms ... statut=1
    }

  3. #23
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    oki donc la partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     IF($row_term['nb_todo']==0 && $row_term['nb_done']==0) 
       // Si aucune suggestion associée au term est trouver, alors ON récupere les suggestions google 
       // associé au term et ON fait un INSERT INTO FROM suggests ...
    Je ne pense pas que vous ayez une autre solution que de l'itératif, vu que vous devez récupérer quelque chose sur google.

    Par contre, dans l'ensemble, votre process peut être découpé en 2 parties :

    Un traitement itératif pour votre traitement google (et dans ce cas restreignez les conditions pour ne faire que ce traitement et pas itérer sur les lignes qui n'ont pas à être traitées).

    Et une seule requête d'update pour ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    elseif($row_term['nb_todo']==0 && $row_term['nb_done'] > 0)
       // Si aucune suggestion associées au term non traitée et plusieurs traitées alors ON 
       // marque le term comme traité UPDATE FROM terms ... statut=1
    Car, pour cette partie-là, vous perdez du temps, vous faites un traitement itératif alors qu'une approche ensembliste marchera parfaitement.

  4. #24
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Citation Envoyé par la_chouette Voir le message
    En faite si le term voiture à bien le statut 0 mais aucune suggestion dans la table suggests lui étant associé via id termid n'est trouver, alors le term ne sera pas retourner comme résultat...

    Pour simplifié:
    J'ai besoin d'extraire tout les term de la table terms en comptant séparément le nombre de suggestion lui étant associée dans la table suggests avec le statut 0 et 1...
    OK

    Mais ce n'est pas ce qui est suggéré par les résultats souhaités dans la première demande.

    Donc il faut utiliser le LEFT

    OU

    Le select INNER
    UNION
    les "term" qui n'existent pas dans Suggest


    comme punkoff, d’où viennent les données sur la boucle WHILE ?
    Ne pas tenir compte : je viens de voir vos 2 messages

  5. #25
    Membre très actif Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Par défaut
    Je suis totalement d'accord avec vous.

    Car pour cette partie là vous perdez du temps, vous faites un traitement itératif alors qu'une approche ensembliste marchera parfaitement.
    En fait, cette partie est dans le cas où le script s’arrête et doit être relancer, cela permet de voir ce qui a été fait ou pas et de mettre à jour...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Requête SQL avec COUNT
    Par Kreepz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 24/12/2014, 16h59
  2. Requête SQL avec Having Count
    Par illight dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/10/2013, 14h00
  3. [MySQL] Requête SQL avec un Count.
    Par Requiem11 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/05/2009, 11h01
  4. Problème de requête SQL avec DISTINCT et COUNT ?
    Par [ZiP] dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/01/2007, 17h11
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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