[Résolu] [MySQL] : count dans clause WHERE

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par rudddy, 8 Septembre 2008.

  1. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    Bonjour à tous,

    j'ai un problème :

    J'ai une table article (id_article, ...) et une table commentaires (id_com, id_article, ...)

    j'aimerais faire une requête qui me sort tout les articles qui n'ont pas de commentaires

    Merci à vous
     
  2. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    Code:
    select * 
    from article
    where id_article 
    not in (select id_article from commentaires)
     
  3. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    clair, net, précis, ...

    ADIDASman : du travail de pro
     
  4. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
  5. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Il manque pas une jointure pour améliorer le temps d'exécution ? Ou je pète peut-etre un plomb ^^

    Code:
    WHERE commentaires.id_article = article.id_article
    :mrgreen:
     
  6. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    merci pour ton aide

    pour l'instant la base est petite (10000 articles et 70000 commentaires) mais j'espère que ça va grandir ... :)
     
  7. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Bah c'est juste que j'ai l'impression qu'il va regarder dans tous les commentaires là, autant directement regarder dans les commentaires qui correspondraient à l'article non ? Je dis ptet des conneries la :s Quelqu'un confirme ?
     
  8. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    je teste sous phpmyadmin les 2 pour voir le temps d'execution
     
  9. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    Il veut la liste de tous les articles qui n'ont pas de commentaire, pas vérifier ceux qui en ont.

    Test à faire pour voir si c'est plus optimisé :

    Code:
    select *
    from article
    where id_article
    not in (select [distinct] id_article from commentaires)
     
  10. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    +1 :D
     
  11. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    J'aurais plutôt fait ça moi, mais je me goure ptet:

    Code:
    select *
    from article
    where id_article
    not in (select distinct id_article from commentaires WHERE commentaires.id_article = article.id_article)
     
  12. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    je sais plus quoi penser

    mon coeur balance ...
     
  13. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    OK, je comprends ce que tu veux dire.
    En faisant ce que j'ai dit, la "grosse" sous-requête n'est exécutée qu'une fois au lieu de nb_d_articles fois pour la "petite version".
    Test à faire donc.
     
  14. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    Fais des tests de performances, c'est le mieux !

    (Et je suis intéressé par les résultats).
     
  15. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Ca dépend aussi s'il y a un index sur les deux id_article ou pas je crois.
     
  16. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    y a un index sur les 2

    mais la différence entre les 2 se situera uniquement au niveau des performances ? les résultats seront identiques ?
     
  17. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    Quelle que soit la méthode retenue, l'index sur id_article est indispensable sur les deux tables.
     
  18. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    - Oui, si différence de performance il y a
    - Oui, ils seront bien identiques
     
  19. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    merci des indications :

    sans where : 30 tuples - 0.0954 s
    avec where : 30 tuples - 0.1013 s

    y'aurait pas un bug comme dirait l'autre ?
     
  20. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    il y a bien un index sur les deux id_article ? Sinon, ça dépend donc du nombre d'enregistrements. Le temps gagné à rechercher dans un plus petit lot est perdu par la jointure. Et le benchmark sans indexes ça donne quoi ? :mrgreen:
     
  21. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    oui index sur les 2 ...

    ok je referais le test dans 10 ans :)

    merci
     
  22. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    et sans indexes ça donne quoi par curiosité ? ^^
     
  23. ADIDASman
    ADIDASman WRInaute discret
    Inscrit:
    17 Avril 2004
    Messages:
    100
    J'aime reçus:
    0
    Merci pour les résultats du test, c'est vrai que ce n'est pas révélateur avec un si petit nombre d'enregistrements !
     
Chargement...
Similar Threads - [Résolu] [MySQL] count Forum Date
[résolu][mysql] faire un "NOT LIKE" sur une chaîne contenant des / Développement d'un site Web ou d'une appli mobile 25 Octobre 2014
[résolu] [mysql] Conditions WHERE avec AND et OR Développement d'un site Web ou d'une appli mobile 13 Mai 2011
[résolu] [mysql] passer un champ à une valeur donnée pour tous les enregistrements Développement d'un site Web ou d'une appli mobile 25 Mars 2011
[résolu][MySQL] Sélection groupée et comptage Développement d'un site Web ou d'une appli mobile 22 Septembre 2008
[mysql] Recherche sensible à la case [resolu] Développement d'un site Web ou d'une appli mobile 11 Juin 2008
[Résolu] [MYSQL] Récupérer l'auto-incremente inséré Administration d'un site Web 7 Avril 2005
Problème images en https (forum phpbb) [résolu] Développement d'un site Web ou d'une appli mobile 18 Novembre 2017
[Résolu] Redirection 301 FR vers EN sur Prestashop uniquement sur outils Google ? Problèmes de référencement spécifiques à vos sites 11 Septembre 2017
[résolu] Passage à HTTPS, comment tester une page ? Développement d'un site Web ou d'une appli mobile 7 Septembre 2017
[Résolu] Redirection d'une famille d'URL URL Rewriting et .htaccess 9 Mars 2017
[Résolu] Diaporama et SEO Débuter en référencement 17 Janvier 2017
[résolu]Redirection monsite.fr/index.html sur monsite.fr et seo URL Rewriting et .htaccess 16 Janvier 2017
[resolu]Publicité facebook lié au compte instagram Facebook 12 Décembre 2016
[résolu] Récupérer des valeurs issues de javascript pour les mettre en base MySQL Développement d'un site Web ou d'une appli mobile 18 Juillet 2016
[résolu] Faire une redirection sauf pour mon adresse IP URL Rewriting et .htaccess 15 Juin 2016
[Résolu] 2 descriptions pour une même url selon requête Crawl et indexation Google, sitemaps 1 Juin 2016
[résolu] Action onchange sur FORM/SELECT qui ne fonctionne qu'à la première action ?!? Développement d'un site Web ou d'une appli mobile 31 Mai 2016
[résolu] Sessions : lire le contenu alors qu'on ne sait pas comment il est nommé... Développement d'un site Web ou d'une appli mobile 25 Mai 2016
[résolu] Avoir un paramètre de session "dynamique" ? Développement d'un site Web ou d'une appli mobile 25 Mai 2016
[résolu] Hauteur de div selon état d'un bouton radio Développement d'un site Web ou d'une appli mobile 23 Mai 2016